【发布时间】:2015-12-20 06:08:14
【问题描述】:
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 的 Pandas 和 pysinstaller 问题,我希望坚持使用 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!"
任何帮助将不胜感激:)
【问题讨论】:
-
?不是valid character for a Windows filename;所以我怀疑问题在于那里还有其他一些实际角色。在 Windows 资源管理器中打开文件名是什么? -
感谢@Burhan Khalid 的回复。关于如何让 os.walk 忽略这些的任何想法?这段代码很可能被用在很多乱七八糟的混有非法字符的高清视频上
-
首先,尝试在 Windows 资源管理器中打开该文件夹,看看实际文件名是什么。
-
这个文件是隐藏的,我相信 root 正在捕捉它 - 但文件名是 ._Icon_1810 Stainless Steel.psd - 该正方形在中间高度显示为一个句点
-
试试
os.walk(unicode(filed)),看看你是否得到相同的结果。
标签: python-2.7 os.walk windowserror