如何使用Python打印目录中的所有文件?
在本文中,我们将学习“如何使用Python打印目录中的所有文件?”。为了完成这个任务,我们使用Python中的 os 模块。所以,让我们讨论一些与此相关的概念。
os 模块是最流行的Python模块之一,用于自动化操作系统的系统调用和操作。 os 模块具有丰富的方法集和易于使用的 API,是标准包之一,并预装了Python。
对于本文,将需要 os 模块中的以下方法:
1. os.startfile():该方法打印给定文件的内容。
Syntax: os.startfile(path, operation=’open’)
Parameters:
- path – String containing the path to a given file
- operation – A string containing one of the following ‘command verbs’
- ‘print’ – Prints the file pertaining to path
- ‘edit’ – Opens the file in the default text-editor for editing
- ‘properties’ – Opens the properties window of the given file
- ‘find’ – Initiates a search starting from directory mentioned in the path
- ‘open’ – Opens the application/file pertaining to the path. If the given file is not an executable file, its associated application is opened
2. os.listdir():此方法列出给定目录中的所有文件和目录。有关此方法的更详细介绍,包括示例和用例,请参阅此处。
Syntax: os.listdir(path=’.’)
Parameters:
- path – String containing the path of the directory containing the files to be printed
Returns: A list containing the names of all the sub -directories and files present in the corresponding directory.
3. os.path.isfile() :由于我们只能打印给定文件夹的子目录,我们将使用此方法检查给定实体是文件还是目录。有关此方法的更详细介绍,包括示例和用例,请参阅此处。
Syntax: os.path.isfile(path)
Parameters:
- path – String containing the path of the entity being checked
Returns: True if path corresponds to a file, else returns False
注意:除了上述模块,您还需要一台连接到 PC 的全功能打印机!
执行
给定脚本的代码行“time.sleep(5)”是完全可选的,只是为了避免连续文件中的操作出现任何不必要的故障或重叠。有关 time.sleep() 方法的更多信息,请参阅此处。
Python
# Import libraries
import os
import time
# Insert the directory path in here
path = ''
# Extracting all the contents in the directory corresponding to path
l_files = os.listdir(path)
# Iterating over all the files
for file in l_files:
# Instantiating the path of the file
file_path = f'{path}\\{file}'
# Checking whether the given file is a directory or not
if os.path.isfile(file_path):
try:
# Printing the file pertaining to file_path
os.startfile(file_path, 'print')
print(f'Printing {file}')
# Sleeping the program for 5 seconds so as to account the
# steady processing of the print operation.
time.sleep(5)
except:
# Catching if any error occurs and alerting the user
print(f'ALERT: {file} could not be printed! Please check\
the associated softwares, or the file type.')
else:
print(f'ALERT: {file} is not a file, so can not be printed!')
print('Task finished!')
输出:
该演示是在 Windows 10 机器上完成的。环境如下:
- 包含正在打印的文件的目录路径:“Local Disk (D):/Files”
- 给定目录中的文件:
- Dir –示例子目录
- File_a.pdf –示例 .pdf 文件
- File_b.txt –一个示例 .txt 文件
- File_c.docx –一个示例 .docx 文件
注意:由于 os.startfile() 仅在 Windows 操作系统中可用,因此 macOS 和 Linux 用户在运行本文给出的脚本时可能会遇到一些问题。