在python中打开当前工作目录的临时文件夹中可用的文件
我试过
pwdir=os.getcwd()
tempdir=pwdir+"/temp/test.txt"
f=open(tempdir,'r+')
当我打印tempdir的路径时,它正确显示,并且还会读取文件的内容。
当我尝试从调用此python脚本的Applescript组合此操作时。我收到这样的错误
f=open(pwdir1,'r+')
IOError: [Errno 2] No such file or directory: '//temp/test.txt'" number 1
编辑:
我使用Applescript的Shell脚本来调用这个pythonscript
do shell script "/Users/mymac/Documents/'Microsoft User Data'/test.py"
编辑:
Python代码:
tempdir = os.path.join(os.getcwd(),'temp','htmlinput.html')
print tempdir
with open(tempdir) as f:
html=f.read()
来自终端的Python输出:(完美无缺)
/Users/mymac/Documents/Microsoft User Data/Outlook Script Menu Items/temp/htmlinput.html
我也能看到文件内容。
Applescript Code:
do shell script "/Users/mymac/Documents/'Microsoft User Data'/'Outlook Script Menu Items'/new.py"
Applescript错误:
error "Microsoft Outlook got an error: Traceback (most recent call last):
File \"/Users/mymac/Documents/Microsoft User Data/Outlook Script Menu Items/new.py\", line 12, in <module>
with open(tempdir) as f:
IOError: [Errno 2] No such file or directory: '/temp/htmlinput.html'" number 1
答案 0 :(得分:3)
我一般不知道Applescript - 或OS X.看起来脚本是从根文件夹运行的,os.getcwd()返回'/'。脚本本身的目录是sys.path[0]
或当前模块的目录名 - dirname(__file__)
- 如果它是单个脚本而不是包。请尝试以下其中一项
import os, sys
tempdir = os.path.join(sys.path[0], 'temp', 'temp.txt')
或
import os
tempdir = os.path.join(os.path.dirname(__file__), 'temp', 'temp.txt')
答案 1 :(得分:1)
双斜线是你的问题。在Python中连接文件和路径名的正确方法是使用os.path.join
。尝试:
tempdir = os.path.join(os.getcwd(), 'temp', 'test.txt')
另外,你可能应该这样做:
with open(tempdir) as f:
即使出现错误,也会确保tempdir关闭。
编辑:
我们需要查看AppleScript调用脚本时tempdir
是什么,而不是从终端调用它时。如果你这样做
tempdir = os.path.join(os.getcwd(),'temp','htmlinput.html')
with open('/Users/mymac/Documents/temp.txt', 'w') as fwrite:
fwrite.write(tempdir)
文件/Users/mymac/Documents/temp.txt
到底有什么结果?