0

python 新手,正在为我在 os.walk 遇到的问题寻求帮助。我环顾四周,找不到解决问题的正确方法。

代码的作用:扫描用户选择的 HD 或文件夹并返回所有文件名、子目录和大小。然后在 pandas 中操作(不在下面的代码中)并以我想要的格式导出到 excel 电子表格中。

但是,在代码的第一部分,在 Python 2.7 中,我目前遇到以下错误:

WindowsError:[错误 123] 文件名、目录名或卷标语法不正确:'E:\03. Work\Bre\Files\folder2\icons grayscale flatten\._Icon_18?10 Stainless Steel.psd'

我已经探索过使用原始字符串(r')但无济于事。也许我写错了。

我会注意到我从来没有在 3.5 或干净标记的选定文件夹中得到这个。由于 3.5 的Pandaspysinstaller问题,我希望坚持使用 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!"

任何帮助将不胜感激 :)

4

1 回答 1

0

为了遍历带有 unicode 字符的文件名,您需要给 os.walk 一个 unicode 路径名。

您的路径包含一个 unicode 字符,该字符?在异常中显示。

如果你传入 unicode 路径,像这样os.walk(unicode(filed))你不应该得到那个异常。

将 python 文件名转换为 unicode中所述,如果 Python 2 的路径是“不可解码的”,有时您会得到一个字节串。

于 2015-12-20T06:44:10.883 回答