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

时间:2019-03-13 16:44:24

标签: 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)   
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'

Screenprint

如何解决这个问题?

1 个答案:

答案 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))