当使用Python编写与文件或子进程相关的应用时,我们通常需要用到shutil和subprocess库。shutil提供了一种方便的方法来移动、复制和删除文件,而subprocess则能够方便地启动和管理子进程。
操作文件
复制文件或目录
可以使用shutil的copyfile(src, dst)
和copytree(src, dst)
函数来复制文件和目录。copyfile()
复制单个文件,copytree()
复制包含子目录和文件的目录树。
import shutil
# 复制文件
shutil.copyfile('original.txt', 'copy.txt')
# 复制文件夹
shutil.copytree('original_dir', 'copy_dir')
移动文件或目录
可以使用shutil的move(src, dst)
函数来移动文件或目录。
import shutil
# 移动文件
shutil.move('original.txt', 'new_dir')
# 移动文件夹
shutil.move('original_dir', 'new_dir')
删除文件或目录
可以使用os的remove(path)
和rmdir(path)
函数来删除文件和目录。remove()
删除单个文件,而rmdir()
用于删除空目录。
import os
# 删除文件
os.remove('file_to_delete.txt')
# 删除空目录
os.rmdir('empty_dir_to_delete')
如果要删除包含文件和子目录的目录,可以使用shutil的rmtree(path)
函数。
import shutil
# 删除目录及其内容
shutil.rmtree('dir_to_delete')
压缩文件或目录
可以使用shutil的make_archive(base_name, format, root_dir)
函数来创建归档文件。其中,base_name
是文件名(包括路径),format
是压缩格式(如zip、tar等),root_dir
是要打包的根目录。
import shutil
# 创建zip文件
shutil.make_archive('archive', 'zip', 'dir_to_archive')
运行子程序
可以使用subprocess库来在Python程序中启动并与子进程通信。
运行外部命令
可以使用subprocess的run(args)
函数来运行外部命令。其中,args
是命令及其参数的列表。
import subprocess
# 运行命令,等待命令完成
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
# 打印命令输出
print(result.stdout.decode())
与子进程交互
可以使用subprocess的Popen(args, stdin, stdout, stderr)
函数来启动子进程并与其交互。其中,args
是命令及其参数的列表,stdin
、stdout
和stderr
用于与子进程交互的标准输入、输出和错误流。
下面的示例启动一个子进程来进行交互式的命令行会话。
import subprocess
# 启动命令行会话
with subprocess.Popen(['bash'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) as proc:
# 发送命令到子进程
proc.stdin.write('echo Hello, world!\n')
proc.stdin.flush()
# 读取并打印子进程输出
result = proc.stdout.readline()
print(result.strip())
在这个例子中,我们通过universal_newlines=True
来设置子进程标准输入和输出的编码以便与Python程序兼容。
以上就是Python使用shutil操作文件、subprocess运行子程序的完整攻略,其中包含了复制、移动、删除、压缩文件和目录,以及运行外部命令和与子进程交互的示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python使用shutil操作文件、subprocess运行子程序 - Python技术站