7

我的 Linux 桌面上名为“test”的目录中有以下 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

任何帮助,将不胜感激。

4

5 回答 5

18

您可以使用os.path.dirname()and__file__来获取绝对路径,如下所示:

#!/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')

这样,脚本将只处理与脚本位于同一目录中的文件,而不管您从何处执行它。

于 2012-10-08T23:54:08.693 回答
1

在你的open('test.txt', 'w')open(r'./test.txt', 'w'). 当你运行它时,使用 "python script.py。看看它是否有效。

于 2012-10-08T23:49:50.460 回答
1

如果您的 cwd 是/Desktop/test,然后您尝试执行./test/script.py,则您正在尝试在/Desktop/test/test/script.py. 更有可能的是,您只是想做./script.py.

顺便说一句,如果您提供了从命令行获得的错误消息,而不是仅仅说“不起作用”,那么您的问题会更有用

如果脚本正在运行并且没有任何内容回显到控制台,则很可能它正在运行。请注意,以“w”模式打开文件会截断文件。也许您想使用a+?

于 2012-10-08T23:55:29.840 回答
0

“等等”没有多大意义。

你在文件系统的哪个位置?测试目录与您所在位置的相对位置是什么?

您是否尝试过完全合格的路径?例如,

/home/daniel/test/script.py
于 2012-10-08T23:48:41.517 回答
0

你在哪个目录下执行?您可以尝试使用:

import os

print os.getcwd()

验证工作目录是否是您认为的那样。

于 2012-10-08T23:51:56.100 回答