建设部网站1667号公告,长沙 外贸网站建设公司,新浪云怎么做淘宝客网站,网站开发尾款如何做账Python3-批量重命名指定目录中的一组文件#xff0c;更改其扩展名 1.argparse模块2.vars内置函数3.os.listdir(path)4.os.path.splitext(filepath)5.os.path.join6.os.rename7.os.path.isfile8.批量重命名指定目录中的一组文件#xff0c;更改其扩展名 1.argparse模块
argpa… Python3-批量重命名指定目录中的一组文件更改其扩展名 1.argparse模块2.vars内置函数3.os.listdir(path)4.os.path.splitext(filepath)5.os.path.join6.os.rename7.os.path.isfile8.批量重命名指定目录中的一组文件更改其扩展名 1.argparse模块
argparse 是 Python 中用于解析命令行参数的标准库模块。
1. 导入 argparse 模块
要使用 argparse 模块首先需要导入它
import argparse2. 创建 ArgumentParser 对象
在使用 argparse 解析命令行参数之前需要创建一个 ArgumentParser 对象。这个对象将包含所有的命令行参数定义。
parser argparse.ArgumentParser(descriptionDescription of your program)在创建 ArgumentParser 对象时可以指定一个可选的参数 description用于描述你的程序。
3. 添加命令行参数
使用 add_argument() 方法向 ArgumentParser 对象添加命令行参数。该方法接受一些参数用于指定命令行参数的名称、类型、帮助信息等。
parser.add_argument(arg_name, typestr, helpHelp message for the argument)上述代码示例中arg_name 是命令行参数的名称type 参数指定了参数的类型这里是字符串类型help 参数用于提供命令行帮助信息。 上面添加的是位置参数载明行中按照顺序传递的参数。可选参数是在命令行中使用选项标志例如 -h 或 --help传递的参数可以根据需要选择是否提供。可以使用 add_argument 方法来定义可选参数。
parser.add_argument(--verbose, actionstore_true, helpEnable verbose mode)
parser.add_argument(--output, typestr, helpSpecify the output file)在上述示例中我们定义了两个可选参数分别是 --verbose 和 --output。--verbose 参数使用 store_true 动作表示如果存在该选项则将参数的值设为 True。--output 参数接受一个字符串作为值。
add_argument() 方法还接受其他一些可选参数例如
action指定参数的行为如存储值、统计参数出现次数等。default指定参数的默认值。choices限制参数的取值范围。required指定是否参数是必需的。
parser.add_argument(--count, typeint, default1, helpSpecify the count)
parser.add_argument(--color, choices[red, green, blue], helpSpecify the color)
parser.add_argument(--required-arg, requiredTrue, helpThis argument is required)在上述示例中--count 参数被指定为整数类型并设置了默认值为 1。--color 参数只能接受在给定的选项列表 [red, green, blue] 中的值。--required-arg 参数被设置为必需的不提供该参数将触发错误。
4. 解析命令行参数
一旦所有的命令行参数都被添加到 ArgumentParser 对象中可以使用 parse_args() 方法解析命令行参数。该方法将返回一个包含解析结果的命名空间对象。
args parser.parse_args()完整示例
下面是一个完整的示例演示如何使用 argparse 解析命令行参数
import argparseparser argparse.ArgumentParser(descriptionExample program for argparse)parser.add_argument(name, typestr, helpName of the user)
parser.add_argument(--age, typeint, helpAge of the user)args parser.parse_args()print(Name:, args.name)
print(Age:, args.age)假设上述代码保存为 example.py 文件可以在命令行中运行以下命令进行测试
python example.py John --age 25输出结果将会是
Name: John
Age: 252.vars内置函数
在 Python 中vars() 是一个内置函数用于返回对象的属性和属性值的字典。它可以应用于模块、类、实例或其他拥有__dict__属性的对象。__dict__是一个字典包含了对象的属性和对应的值。
以下是 vars() 函数的使用示例
1.对于模块
import math
print(vars(math)) # 返回 math 模块的属性和属性值的字典2. 对于类
class Person:def __init__(self, name, age):self.name nameself.age ageperson Person(Alice, 25)# 获取对象的属性和属性值的字典
person_dict vars(person)
print(person_dict)输出
{name: Alice, age: 25}使用 vars() 函数我们可以获取 person 对象的属性和属性值的字典并将其存储在 person_dict 变量中。输出结果显示了 person_dict 字典其中包含了对象的属性名和对应的属性值。
需要注意的是vars() 函数只能用于获取普通对象具有实例变量的属性和属性值而不能用于获取内置对象如列表、字典的属性和属性值。对于内置对象可以使用相应的方法如 dir()来获取属性和方法列表。
3.os.listdir(path)
os.listdir() 函数接受一个路径作为参数并返回该路径下的所有文件和文件夹的列表。在这个例子中路径参数 . 表示当前目录。
以下是示例代码
import os# 列出当前目录下的文件和文件夹
files os.listdir(.)
for file in files:print(file)4.os.path.splitext(filepath)
os.path.splitext() 是 Python 的 os.path 模块中的函数用于将文件路径分割为文件名和文件扩展名。它返回一个包含文件名和扩展名的元组。
以下是 os.path.splitext() 的用法示例如果文件路径不包含扩展名extension 变量将是一个空字符串。
import osfile_path /path/to/file.txt
filename, extension os.path.splitext(file_path)print(Filename:, filename) # 输出文件名部分
print(Extension:, extension) # 输出扩展名部分Filename: /path/to/file
Extension: .txt5.os.path.join
os.path.join() 是 Python 的 os.path 模块中的函数用于将多个路径组合成一个完整的路径。
以下是 os.path.join() 的用法示例
import os# 组合路径
path os.path.join(dir1, dir2, file.txt)
print(path)在这个例子中os.path.join() 接受多个路径参数并将它们组合成一个完整的路径。每个参数可以是字符串表示路径的各个部分。
输出将显示组合后的完整路径dir1/dir2/file.txt
os.path.join() 函数的特点是它会根据操作系统的规则自动处理路径分隔符。它会根据当前操作系统的约定使用适当的路径分隔符例如 / 或 \来组合路径。
这使得代码在不同操作系统上具有可移植性而无需显式指定路径分隔符。
os.path.join() 只是将路径组合成一个字符串它不会检查路径是否存在或验证路径的有效性。它只是简单地将给定的路径部分连接在一起形成一个完整的路径字符串。
6.os.rename
os.rename() 是 Python 的 os 模块中的函数用于对文件或目录进行重命名操作。
以下是 os.rename() 的用法示例
import os# 重命名文件或目录
old_name old_name.txt
new_name new_name.txt
os.rename(old_name, new_name)需要注意的是os.rename() 函数只能对存在的文件或目录进行重命名操作而且它不会递归地重命名目录下的所有子目录和文件。
如果要对目录进行重命名操作目录必须为空否则会引发 OSError 异常。如果要对非空目录进行重命名可以使用 shutil 模块中的 shutil.move() 函数。
os.rename函数可以用于重命名文件和目录。如果当前文件或目录不存在或者新名称已经存在将会引发相应的异常。确保在使用os.rename函数之前您已经检查了相关的条件以避免出现错误。
7.os.path.isfile
os.path.isfile() 是 Python 的 os.path 模块中的函数用于检查给定路径是否为文件。
以下是 os.path.isfile() 的用法示例
import osfile_path /path/to/file.txt
if os.path.isfile(file_path):print(路径是一个文件)
else:print(路径不是一个文件)在这个例子中os.path.isfile() 函数接受一个路径作为参数并返回一个布尔值。如果给定路径指向一个文件则返回 True否则返回 False。
通过使用 if 语句可以根据 os.path.isfile() 的返回值来执行相应的操作。在这个例子中如果路径 file_path 是一个文件就会打印 “路径是一个文件”否则会打印 “路径不是一个文件”。
请注意os.path.isfile() 只检查给定路径是否为文件而不会检查文件是否存在。如果路径不存在或指向一个目录os.path.isfile() 仍然会返回 False。
因此在使用 os.path.isfile() 函数之前最好先确保路径存在或者结合其他函数如 os.path.exists()一起使用来进行路径的有效性检查。
8.批量重命名指定目录中的一组文件更改其扩展名
import argparse
import osdef batch_rename(work_dir, old_ext, new_ext):This will batch rename a group of files in a given directory,once you pass the current and new extensions# files os.listdir(work_dir)for filename in os.listdir(work_dir):# Get the file extensionsplit_file os.path.splitext(filename)# Unpack tuple elementroot_name, file_ext split_file# Start of the logic to check the file extensions, if old_ext file_extif old_ext file_ext:# Returns changed name of the file with new extentionnewfile root_name new_ext# Write the filesos.rename(os.path.join(work_dir, filename), os.path.join(work_dir, newfile))print(rename is done!)print(os.listdir(work_dir))def get_parser():parser argparse.ArgumentParser(descriptionchange extension of files in a working directory)parser.add_argument(work_dir,metavarWORK_DIR,typestr,nargs1,helpthe directory where to change extension,)parser.add_argument(old_ext, metavarOLD_EXT, typestr, nargs1, helpold extension)parser.add_argument(new_ext, metavarNEW_EXT, typestr, nargs1, helpnew extension)return parserdef main():This will be called if the script is directly invoked.# adding command line argumentparser get_parser()args vars(parser.parse_args())# {work_dir: [.], old_ext: [txt], new_ext: [tmd]}print(args)# Set the variable work_dir with the first argument passedwork_dir args[work_dir][0]# Set the variable old_ext with the second argument passedold_ext args[old_ext][0]if old_ext and old_ext[0] ! .:old_ext . old_ext# Set the variable new_ext with the third argument passednew_ext args[new_ext][0]if new_ext and new_ext[0] ! .:new_ext . new_extprint(work_dir) # .print(old_ext) # .txtprint(new_ext) # .tmdbatch_rename(work_dir, old_ext, new_ext)# python main.py . txt tmd
if __name__ __main__:main()