【问题标题】:Python code to open all files in a directory and print their first linePython代码打开目录中的所有文件并打印它们的第一行
【发布时间】:2019-03-13 16:44:23
【问题描述】:

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

如何解决这个问题?

【问题讨论】:

  • 在路径变量的末尾添加“\”,然后 f=open(path+file, 'r')。如果您调试(打印)变量文件,您将得到“错误”
  • 将文件名追加到 glob.glob(path)
  • 这是一个权限错误 PermissionError: [Errno 13] Permission denied: he has to give them read permission

标签: python python-3.x


【解决方案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))    

【讨论】:

  • 谢谢。它有帮助。
  • 我认为你的回答是正确的,如果你解释为什么它会给出一个高度误导的权限错误,并详细说明我们都会很高兴
猜你喜欢
  • 2013-06-19
  • 2021-11-29
  • 2020-03-23
  • 1970-01-01
  • 2019-03-19
  • 2018-12-27
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多