2012-10-08 6 views
5

私は私のLinuxデスクトップ上の「試験」と呼ばれるディレクトリ内の次のPythonスクリプトを持っている:私は、ディレクトリと型の内側に行けばPythonのスクリプト内に別のディレクトリを実行

#!/usr/bin/python 

f = open('test.txt','w') 
f.write('testing the script') 

は、だから、/Home/Desktop/test/script.py

です./script.py正常に動作し、test.txtファイルを作成します。

ただし、何らかの理由でデスクトップからスクリプトを実行できません(/Home/Desktop)。たとえば、./test/script.pyを試しましたが、動作しませんでした。

スクリプトのファイルのアクセス許可は、755、ディレクトリ777です。

ご協力いただければ幸いです。

+0

コンソールに表示されるエラーメッセージを表示できますか? – ernie

+0

エラーメッセージが表示されないので、スクリプトは実行されていますが、ファイルを作成できません。 –

+0

ファイルを作成できなかった場合は、I/Oエラーが発生します。私はそれがあなたがそれを期待する場所ではなく、ファイルを作成していると推測しています。また、私の答えで述べたように、 'w'モードはファイルを切り詰めるので、ファイルが存在する場合は変更されません(変更された時間を除く)。 – ernie

答えて

13

です:

#!/usr/bin/python 

import os # We need this module 

# Get path of the current dir, then use it to create paths: 
CURRENT_DIR = os.path.dirname(__file__) 
file_path = os.path.join(CURRENT_DIR, 'test.txt') 

# Then work using the absolute paths: 
f = open(file_path,'w') 
f.write('testing the script') 

このようにして、スクリプトは、実行する場所に関係なく、スクリプトと同じディレクトリにのみ置かれたファイルに対して機能します。

+0

チャームのように働いた。ありがとう、たくさんの男。私はそのスクリプトを実行しているその変更なしに推測していますが、/ Desktop/testの代わりに/ Desktopに配置しようとしていたため、ファイルを作成できませんでしたか? –

+0

@ダニエルS:まったく! :)私は助けてうれしいです。 – Tadeck

+1

ありがとうございました。 –

0

「そうだ」とはあまり意味がありません。

ここでファイルシステムはどこですか?テスト ディレクトリは、あなたの場所に対するディレクトリの相対的な位置は何ですか?

完全修飾パスを試しましたか? 例えば、open('test.txt', 'w')open(r'./test.txt', 'w')を入れて、あなたに

/home/daniel/test/script.py 
+0

私はデスクトップ上にあり、 'test'ディレクトリはその中にあります。私はこの情報を含む質問を編集しました。ありがとう –

1

。あなたはそれを実行すると、「パイソンscript.pyを使用することが動作するかどうかを参照してください

+0

あなたはpythonを使用することを意味します./test/script.py?なぜなら、私はそのディレクトリの外からスクリプトを実行しようとしているからです。 –

+0

はい。私はあなたが 'python'実行可能ファイルにパラメータを一般化できると考えました。 – alvonellos

+0

Gotcha。あなたはopen(r '/ test.txt'、 'w')またはopen( './ test.txt'、 'w')を意味しますか? –

0

あなたは 何ディレクトリで実行しているあなたは、使用してみてください:。。?を

import os 

print os.getcwd() 

を作業ディレクトリは、あなたがそれ考えるものであることを確認するために、 。あなたは、このような絶対パスを取得するにはos.path.dirname()__file__を使用することができます

1

あなたのcwdが/Desktop/testの場合、./test/script.pyを実行しようとすると、/Desktop/test/test/script.pyでスクリプトを実行しようとしています。おそらく、あなたは./script.pyをしたかったでしょう。

エラーは、コマンドラインからもらったメッセージだけではなく、スクリプトが実行されている場合は、「動作しませんでした」

言って、何を提供した場合はさておき、あなたの質問は、より便利だっただろうコンソールにエコーされ、おそらく動作している可能性があります。 opening a file in 'w' mode truncates the fileに注意してください。たぶんあなたは+を使用したいですか?

+0

エラーメッセージは表示されません。スクリプトが実行されているにもかかわらず、ファイルが開かれていません。 –

+0

@DanielSはそれのように聞こえる - サニティチェックのためだけにプリントステートメントに入れる価値があるかもしれない。 。 .does test.txtが存在し、そのパーミッションは何ですか? – ernie

+0

私は、何が起こっているかを発見するためにもっと調べていきます。 –

関連する問題