#python #python-3.x
#python #python-3.x
Вопрос:
В папке abc находятся 2 файла «.XFR» с обычным текстом внутри них. Цель состоит в том, чтобы написать скрипт, который открывает каждый из файлов и печатает их первую строку. Попробовал следующий код:
import os
import glob
f = []
path = r"C:UsersAjayDesktopabc"
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:UsersAjayDesktop>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'
Как с этим справиться?
Комментарии:
1. Добавьте «» в конец вашей переменной path, затем f = открыть(путь файл, ‘r’). При отладке (печати) переменных files вы получите «ошибку»
2. Добавьте имя файла в glob.glob(путь)
3. это ошибка разрешения PermissionError: [Ошибка 13] В разрешении отказано: он должен предоставить им разрешение на чтение
Ответ №1:
Во-первых, исходный код с os.walk
является избыточным. Вы переопределяете его с помощью glob
. Удалите его.
Во-вторых, вы используете glob
неправильно. Он принимает выражение, указывающее, какие файлы вам нужны.
Попробуйте:
files=glob.glob(path os.sep "*.XFR")
Таким образом, вы получите только файлы, которые заканчиваются на "XFR"
. Убедитесь, что регистр совпадает.
path = r"C:UsersAjayDesktopabc"
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))
Комментарии:
1. Спасибо. Это помогло.
2. Я думаю, что ваш ответ правильный, если вы объясните, почему он выдает ошибку разрешения, которая часто пропускается, и немного уточните, мы все будем счастливы