文件夹 abc 中有2个“ .XFR”文件,其中包含纯文本。 目的是编写一个脚本来打开每个文件并打印它们的第一行。 尝试了以下代码:
import os
import glob
f = []
path = r"C:\Users\Ajay\Desktop\abc"
for (dirpath, dirnames, filenames) in os.walk(path):
f.extend(filenames)
break
print(f)
files=glob.glob(path)
for file in files:
f=open(file, 'r')
f.readlines()
print(f)
f.close()
它正确列出了所有文件,但是对于fileopen,它给我一个错误,提示:
(base) C:\Users\Ajay\Desktop>python readline.py
['1234.XFR', '23465.XFR']
Traceback (most recent call last):
File "readline.py", line 14, in <module>
f=open(file, 'r')
PermissionError: [Errno 13] Permission denied:
'C:\\Users\\Ajay\\Desktop\\abc'
如何解决这个问题?
答案 0 :(得分:1)
首先,带有os.walk
的初始代码是多余的。您正在用glob
覆盖它。删除它。
第二,您使用的是glob
错误。它接受一个表达式来告诉它要保存的文件。
尝试:
files=glob.glob(path + os.sep + "*.XFR")
这样,它只会为您提供以"XFR"
结尾的文件。确保大小写匹配。
path = r"C:\Users\Ajay\Desktop\abc"
files=glob.glob(path + os.sep + '*.XFR')
for f in files:
with open(f, 'r') as fp:
print(next(fp, "no data in file: " + f))