shutil和fileinput模块:文件操作的最佳实践

简介: shutil和fileinput模块:文件操作的最佳实践

在Python中,shutil和fileinput模块是处理文件和输入/输出(I/O)操作的有力工具。shutil模块提供了一种在Python中操作文件的高级接口,而fileinput模块则允许我们轻松地读取多个输入流。

shutil模块

shutil模块是Python的标准库之一,提供了很多用于处理文件和文件夹的函数。下面是一些常用的shutil函数:

  1. shutil.copy(src, dst): 复制源文件(src)到目标路径(dst)。
  2. shutil.move(src, dst): 将源文件(src)移动到目标路径(dst)。
  3. shutil.copytree(src, dst): 复制源文件夹(src)到目标路径(dst)。
  4. shutil.rmtree(path): 删除包含空文件夹的路径。
  5. shutil.chown(path, user=None, group=None): 改变路径(path)的所有者。
  6. shutil.get_terminal_size(): 返回终端窗口的大小。
  7. shutil.disk_usage(path): 返回指定路径的磁盘使用情况。
  8. shutil.make_archive(base_name, format, root_dir=None, verbose=0, dry_run=0): 创建归档文件。
  9. shutil.register_rmtree(dir): 在rmtree函数中注册文件夹,以便在删除时通知rmtree函数。

以下是shutil模块的使用示例:

pythonimport shutil
import os
# 创建文件夹
os.makedirs('test_folder')
# 复制文件
shutil.copy('source.txt', 'test_folder/destination.txt')
# 移动文件
shutil.move('source.txt', 'test_folder/source.txt')
# 删除文件夹,包括其中的所有文件和子文件夹
shutil.rmtree('test_folder')
import shutil
import os
# 创建文件夹
os.makedirs('test_folder')
# 复制文件
shutil.copy('source.txt', 'test_folder/destination.txt')
# 移动文件
shutil.move('source.txt', 'test_folder/source.txt')
# 删除文件夹,包括其中的所有文件和子文件夹
shutil.rmtree('test_folder')

fileinput模块

fileinput模块允许用户在Python程序中轻松地迭代多个输入流,包括标准输入、文件和目录。fileinput模块的主要功能是处理多个输入流,这对于处理命令行参数、文件名和标准输入非常有用。它支持在每个文件上执行操作,并在操作完成后自动关闭文件。以下是一些常用的fileinput函数:

  1. fileinput.input(files=None, inplace=False, backup='', bufsize=-1, mode='b', openhook=None): 从文件中读取行。
  2. fileinput.FileInput(files=None, inplace=False, backup='', bufsize=-1, mode='b', openhook=None): 从文件中读取行,并保持打开的文件句柄。
  3. fileinput.hook_compressed(method=None, mode='b'): 为open函数添加压缩支持。
  4. fileinput.hook_encoded(encoding=None): 为open函数添加编码支持。
  5. fileinput.close(): 关闭所有打开的文件句柄。
  6. fileinput.isfirstline(): 如果当前行是第一个行,则返回True。
  7. fileinput.isstdin(): 如果当前行来自标准输入,则返回True。
  8. fileinput.nextfile(): 关闭当前文件并前进到下一个文件。如果已经处于最后一个文件,则返回None。
  9. fileinput.filename(): 返回当前文件的名称。如果已经处于最后一个文件,则返回None。
  10. fileinput.lineno(): 返回当前行的行号。如果已经处于最后一个文件,则返回None。
  11. fileinput.filelineno(): 返回当前文件的行号。如果已经处于最后一个文件,则返回None。
  12. fileinput.fileno(): 返回当前文件的文件描述符。如果已经处于最后一个文件,则返回None。
  13. fileinput.readline(): 读取并返回当前文件的下一行,不包括结尾的换行符(如果有的话)。如果已经处于最后一个文件,则返回None。
  14. fileinput.readlines(): 读取并返回当前文件的剩余所有行,每行作为一个字符串列表。如果已经处于最后一个文件,则返回None。
  15. fileinput.__next__():__next__():读取并返回当前文件的下一行,不包括结尾的换行符(如果有的话)。如果已经处于最后一个文件,则引发StopIteration异常。

以下是使用fileinput模块的示例代码:

pythonimport fileinput
# 从文件中读取行并输出到控制台
for line in fileinput.input('test.txt'):
    print(line)
# 在文件上执行操作并输出结果
with fileinput.FileInput('test.txt') as f:
    for line in f:
        # 对每一行进行处理
        processed_line = line.strip().upper()
        print(processed_line)
import fileinput
# 从文件中读取行并输出到控制台
for line in fileinput.input('test.txt'):
    print(line)
# 在文件上执行操作并输出结果
with fileinput.FileInput('test.txt') as f:
    for line in f:
        # 对每一行进行处理
        processed_line = line.strip().upper()
        print(processed_line)

在上面的示例中,我们使用fileinput.input()函数从文件中读取行,并将其打印到控制台。我们还使用fileinput.FileInput()函数创建一个文件对象,并在其上迭代每一行。对于每一行,我们执行一些操作(例如去除首尾的空白字符并转换为大写字母),然后将其打印到控制台。

除了上述示例外,fileinput模块还提供了许多其他功能,例如支持从标准输入读取行、支持文件备份、支持指定缓冲区大小等等。您可以查看Python文档以获取更多信息。

目录
相关文章
|
29天前
|
安全 项目管理 Python
使用Python shutil库进行文件和目录操作
使用Python shutil库进行文件和目录操作
使用Python shutil库进行文件和目录操作
|
Python
Python基础之shutil及zipfile模块
Python基础之shutil及zipfile模块
79 0
|
Python
Python中如何使用os模块和shutil模块处理文件和文件夹
os和shutil都是Python标准库中用于处理文件和文件夹的模块,它们都提供了许多常用的文件和文件夹操作功能,但是它们的使用场景和优势有所不同。os模块和shutil模块各自具有不同的优势,可以根据实际需要选择使用。如果只需要对单个文件或目录进行基本的文件操作,可以使用os模块;如果需要复制或移动多个文件或目录,或者需要进行文件和目录的压缩和解压缩,就应该使用shutil模块。有些需求同时使用两者才能满足要求
113 0
|
Python
python中shutil和shutil库的用法
Python shutil库提供了对文件和目录复制、移动、删除、压缩、解压等操作。
73 0
|
Python
Python:使用 os、shutil 模块对文件与目录操作
当你想批量处理文件的时候,使用 python 对文件或者文件夹进行操作,可以迅速地解决问题。 在 python 里面有几个内置模块可以对文件进行复制、移动、重命名及读写等操作。以下是对 os、shutil 模块里面的重要函数与方法进行的简单介绍。
137 0
Python模块——shutil模块详解
Python模块——shutil模块详解
Python模块——shutil模块详解
|
Python
Python编程:shutil模块-操作目录及文件
Python编程:shutil模块-操作目录及文件
191 0
|
测试技术 Python
Python常见问题 - 使用openpyxl模块时出现错误: zipfile.BadZipFile: File is not a zip file
Python常见问题 - 使用openpyxl模块时出现错误: zipfile.BadZipFile: File is not a zip file
1745 0
Python常见问题 - 使用openpyxl模块时出现错误: zipfile.BadZipFile: File is not a zip file
|
Python
【Python标准库:fileinput】优雅的读取文件
每当我写个脚本涉及文件输入时,一般写法都是下面这种 import sys file_in = sys.argv[1] for line in open(file_in, 'r'): commands 这个操作有一个缺点就是,如果我想从管道里面传入数据给Python的话,就会报错,因为原代码要求文件而不是标准输入。
1341 0