2012-01-11 5 views
1
import xlrd 
book = xlrd.open_workbook("univ_list.xls") 

私はpythonを使いました。私はPythonスクリプトと同じディレクトリにあるMS Excelファイルを読み込もうとしています。上記のコードを実行すると、エラーno such file or directoryが返されます。python:そのようなファイルやディレクトリのエラーはありません

必要に応じて詳しい情報を提供します。

編集:あなたは、文字列エスケープによって傷つくしている対応するエラーメッセージ

enter image description here

+1

スクリプトをどのように実行していますか? – Mark

+4

pythonスクリプトと同じディレクトリにいるだけでは不十分です。そのディレクトリも現在の作業ディレクトリでなければなりません。 .xlsへのフルパスを指定してみてください。それが解決すれば、それはあなたの問題でした。 – AdamKG

+0

@マーク私はPyScripterでRUNボタンを使用しています。 –

答えて

0
import xlrd 
book = xlrd.open_workbook("univ_list.xls") 

作品。

1

と要求

import xlrd 
book = xlrd.open_workbook("D:\Python_Scripts\univ_list.xls") 

時に完全なパスとコード。 \はPython文字列のエスケープ文字なので、Pythonは\P\uエスケープコード(他のものの中でも)を探していますが、これはあなたが望むものではありません。 「:univ_list.xls \ \ Python_Scripts D」、またはバックスラッシュを尊重しないr""(すなわちr"D:\Python_Scripts\univ_list.xls")文字列に文字列を切り替える

修正は、いずれかのパスにを変更することによって\をエスケープすることです。

+0

この場合、これが正しいとは思わない。バックスラッシュはエスケープ文字ですが、すべての文字をエスケープしません。生の文字列を使うのは良いですが、次の例を考えてみましょう: "\ c" - > \\ c "、" "\ b" - > \ x08 "、" "\ P" - > \\ P ' '。インタラクティブなプロンプトで試してみてください。エスケープ時に後続の文字が「特別」でない場合、Pythonはバックスラッシュをインテリジェントに修正します。 –

+1

@ g.d.d.cそれでも、それは良い習慣です。彼が後で戻って、 "D:\ Python_scripts \ new_workbook.xls"へのパスを使用したい場合はどうなりますか? "\ n"がエスケープされます。 – HardlyKnowEm

+0

それは私の問題を解決しませんでした。 –

0

PyScripterが現在のディレクトリを設定するという問題があります。これはあなたのExcelやPythonファイルが入っているディレクトリではありません(あなたの家、c:\、またはPyscriperが入っているディレクトリ(おそらくos.getcwd()を使用してそのディレクトリを取得しています)。

したがって、解決策は完全なパスを提供することです - しかし、他の答えやコメントに示されているように、これはWindowsが文字列のエスケープ文字として\をプログラミングするのとうまく混合しないような生の形式の文字列である必要があります。完全によく、私はXLSXとxlsファイルを交換する必要があることを除いて

2

Pythonは、ファイルを見つけることができないと言う場合には、あるカップルは、あなた寿ステップ取る。最初は、ファイルが存在することを確認することです。最初のステップは、スペルが正しいことを確認することです。次に、AdamKGの示唆したように、Pythonがそれを見ることができることを確認してください:

import os.path 
assert os.path.isfile(path_to_file) 
関連する問題