我有一个Python脚本,用于打开位于特定目录(工作目录)中的特定文本文件,并执行一些操作。
(假设如果目录中有文本文件,那么它总是不会超过一个这样的.txt
文件)
with open('TextFileName.txt', 'r') as f:
for line in f:
# perform some string manipulation and calculations
# write some results to a different text file
with open('results.txt', 'a') as r:
r.write(someResults)
我的问题是如何让脚本找到目录中的文本(.txt)文件并打开它而不明确提供其名称(即不提供'TextFileName.txt')。因此,无参数要运行此脚本需要打开哪个文本文件。
有没有办法在Python中实现这个目标?
答案 0 :(得分:4)
您可以使用os.listdir
获取当前目录中的文件,并按其扩展名对其进行过滤:
import os
txt_files = [f for f in os.listdir('.') if f.endswith('.txt')]
if len(txt_files) != 1:
raise ValueError('should be only one txt file in the current directory')
filename = txt_files[0]
答案 1 :(得分:1)
您还可以使用glob
这比os
import glob
text_file=glob.glob('*.txt')
if len(text_file) != 1:
raise ValueError('should be only one txt file in the current directory')
filename = text_file[0]
glob
搜索os.curdir
您可以通过设置
切换到工作目录 os.chdir(r'cur_working_directory')
答案 2 :(得分:0)
从 Python 3.4 版开始,就可以使用强大的 pathlib
库。它提供了一个 glob
方法,可以轻松地根据扩展名进行过滤:
from pathlib import Path
path = "." # current directory
extension = ".txt"
file_with_extension = next(Path().glob(f"*{extension}")) # returns the file with extension or None
if file_with_extension:
with open(file_with_extension):
...