【问题标题】:Os.walk - WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect:Os.walk - WindowsError: [错误 123] 文件名、目录名或卷标语法不正确:
【发布时间】: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 的 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!"

任何帮助将不胜感激:)

【问题讨论】:

  • ? 不是valid character for a Windows filename;所以我怀疑问题在于那里还有其他一些实际角色。在 Windows 资源管理器中打开文件名是什么?
  • 感谢@Burhan Khalid 的回复。关于如何让 os.walk 忽略这些的任何想法?这段代码很可能被用在很多乱七八糟的混有非法字符的高清视频上
  • 首先,尝试在 Windows 资源管理器中打开该文件夹,看看实际文件名是什么。
  • 这个文件是隐藏的,我相信 root 正在捕捉它 - 但文件名是 ._Icon_1810 Stainless Steel.psd - 该正方形在中间高度显示为一个句点
  • 试试os.walk(unicode(filed)),看看你是否得到相同的结果。

标签: python-2.7 os.walk windowserror


【解决方案1】:

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

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

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

Convert python filenames to unicode 中所述,如果路径被 Python 2 “不可解码”,有时您会得到一个字节串。

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2020-07-30
    相关资源
    最近更新 更多