Python导入模块load_source

问题描述 投票:1回答:1

我对load_source有疑问。

当我的2个.py文件在同一目录/home/pi,他们工作正常。

卖弄.朋友

 #!/usr/bin/python
import buttonlog

button log.朋友

import datetime
i = datetime.datetime.now()

#OPEN FILE & APPEND
f=open('buttonlog.txt','a')
#WRITE DATE THEN NEW LINE WITH THE '\N'
f.write(i.isoformat() + '\n')

当我运行python main.py时,它会像我期望的那样写一个条目。但是,我想将main.py存储在另一个目录中,所以我尝试了这个,它存储在/home/pi/test

#!/usr/bin/python
import imp
imp.load_source('buttonlog', '/home/pi/buttonlog.py')

当我运行python /home/pi/test/main.py时,我没有得到任何错误,也没有在我的文件中写入一个条目。我究竟做错了什么?

python
1个回答
1
投票

秘密是使用open命令。

正如文档中提到的第一个论点,

file是一个path-like object,给出要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符。

通过传递"buttonlog.txt",这不是一个绝对的路径名,所以它相对于当前的工作目录。

解决此问题的最简单方法是使用完整路径。如果你总是希望它写入/home/pi,你只需要:

f=open('/home/pi/buttonlog.txt','a')

还有其他选择,但我认为这是最干净的。您还可以在发出相同结果的open命令之前更改当前工作目录。只需将此代码放在open行上方:

import os
os.chdir("/home/pi")
© www.soinside.com 2019 - 2024. All rights reserved.