我在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
。
任何帮助都将不胜感激。
答案 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()
验证工作目录是否符合您的想法。