0

pythonが初めてで、os.walkで抱えている問題について助けを求めています。私はしっかりと見回してきましたが、私の問題に対する正しい解決策を見つけることができません。

コードの動作: ユーザーが選択した HD またはフォルダーをスキャンし、すべてのファイル名、サブディレクトリ、およびサイズを返します。これは pandas で操作され (以下のコードではありません)、必要な形式で Excel スプレッドシートにエクスポートされます。

ただし、Python 2.7 のコードの最初の部分で、現在以下のエラーが発生しています。

Windows エラー: [エラー 123] ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません: 'E:\03. Work\Bre\Files\folder2\icons grayscale flatten\._Icon_18?10 ステンレス鋼.psd'

生の文字列 (r') を使用して調査しましたが、役に立ちませんでした。たぶん私の書き方が悪いのでしょう。

3.5 や、きれいにラベル付けされた選択されたフォルダーでは、これを取得できないことに注意してください。3.5 のPandaspysinstallerの問題により、3.5 のエラーが解決されるまで 2.7 を使用したいと考えています。

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 パスを渡すと、os.walk(unicode(filed))その例外は発生しません。

Convert python filenames to unicodeで述べたように、パスが Python 2 で「デコードできない」場合、バイト文字列を取得することがあります。

于 2015-12-20T06:44:10.883 に答える