Python代码打开目录中的所有文件并打印它们的第一行

Python代码打开目录中的所有文件并打印它们的第一行,python,python-3.x,Python,Python 3.x,文件夹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

文件夹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'
(基本)C:\Users\Ajay\Desktop>python readline.py
['1234.XFR','23465.XFR']
回溯(最近一次呼叫最后一次):
文件“readline.py”,第14行,在
f=打开(文件“r”)
PermissionError:[Errno 13]权限被拒绝:
'C:\\Users\\Ajay\\Desktop\\abc'


如何解决这个问题?

首先,使用
os.walk
的初始代码是多余的。您正在使用
glob
覆盖它。移除它

第二,你用错了。它接受一个表达式来告诉它您要查找哪些文件

尝试:

这样,它只会给您以
“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))    

在path变量的末尾添加“\”,然后f=open(path+file,'r')。如果您调试(打印)变量文件,您将得到一个“错误”,将文件名附加到glob.glob(路径)中,这是一个权限错误PermissionError:[Errno 13]权限被拒绝:他必须给他们读取权限谢谢。这很有帮助。我认为你的答案是正确的,如果你解释一下为什么它给出了一个非常错误的许可错误,再详细说明一下,我们都会很高兴的
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))