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.

Другие вопросы по тегам