Os.walk - WindowsError: [Ошибка 123] Неверный синтаксис имени файла, имени каталога или метки тома:
Новичок в Python и ищет помощь по проблеме, с которой я столкнулся с os.walk. Я тщательно огляделся и не могу найти правильного решения своей проблемы.
Что делает код: Сканирует выбранный пользователем HD или папку и возвращает все имена файлов, подкаталоги и размер. Затем этим манипулируют в пандах (не в коде ниже) и экспортируют в электронную таблицу Excel в нужном мне формате.
Тем не менее, в первой части кода, в Python 2.7, я в настоящее время испытываю следующую ошибку:
WindowsError: [Ошибка 123] Неверный синтаксис имени файла, имени каталога или метки тома: 'E:\03. Work\Bre\Files\folder2\icons greyscale flatten\._Icon_18?10 Нержавеющая сталь.psd'
Я исследовал, используя необработанную строку (r'), но безрезультатно. Возможно, я пишу это неправильно.
Я отмечу, что я никогда не получаю это в 3.5 или на четко помеченных выбранных папках. Из-за проблем Pandas и pysinstaller с 3.5, я надеюсь придерживаться 2.7, пока ошибка с 3.5 не будет решена.
import pandas as pd
import xlsxwriter
import os
from io import StringIO
#Lists for Pandas Dataframes
fpath = []
fname = []
fext = []
sizec = []
# START #Select file directory to scan
filed = raw_input("\nSelect a directory to scan: ")
#Scan the Hard-Drive and add to lists for Pandas DataFrames
print "\nGetting details..."
for root, dirs, files in os.walk(filed):
for filename in files:
f = os.path.abspath(root) #File path
fpath.append(f)
fname.append(filename) #File name
s = os.path.splitext(filename)[1] #File extension
s = str(s)
fext.append(s)
p = os.path.join(root, filename) #File size
si = os.stat(p).st_size
sizec.append(si)
print "\nDone!"
Любая помощь будет принята с благодарностью:)
1 ответ
Чтобы обойти имена файлов с помощью символов Юникода, вам нужно дать os.walk имя пути Unicode.
Ваш путь содержит символ Unicode, который отображается как ?
в исключении.
Если вы переходите в Unicode-путь, как это os.walk(unicode(filed))
Вы не должны получить это исключение.
Как отмечалось в разделе Преобразование имен файлов python в unicode, иногда вы получите строку байтов, если путь "не декодируется" в Python 2.