在另一个目录中运行Python脚本

时间:2012-10-08 23:45:03

标签: python

我在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

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:16)

您可以使用os.path.dirname()__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')

这样,无论您从哪个位置执行脚本,脚本都可以处理与脚本位于同一目录的文件。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如果您的cwd为/Desktop/test,然后您尝试执行./test/script.py,则您尝试在/Desktop/test/test/script.py处运行脚本。更有可能的是,你只想做./script.py

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

如果脚本正在运行并且没有任何内容回显到控制台,则很可能它正在运行。请注意opening a file in 'w' mode truncates the file。也许你想用+?

答案 3 :(得分:0)

“等等”并不意味着什么。

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

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

/home/daniel/test/script.py

答案 4 :(得分:0)

你在执行什么目录? 您可以尝试使用:

import os

print os.getcwd()

验证工作目录是否符合您的想法。