如何在完整路径下加载Python模块?请注意,该文件可以位于文件系统中的任何位置,因为它是一个配置选项.
似乎他们在Python 3中取消了通过删除快速加载脚本的所有简单方法 execfile()
有没有一个明显的选择我错过了?
我想从另一个Python脚本运行Python脚本.我想传递变量,就像我使用命令行一样.
例如,我会跑我的,将通过值(0,1,2,3)的列表迭代第一个脚本,并通过那些到第二脚本script2.py 0
,然后 script2.py 1
,等
我找到了SO 1186789这是一个类似的问题但ars的答案调用了一个函数,因为我想运行整个脚本而不仅仅是一个函数,而balpha的答案调用脚本但没有args.我将其改为以下类似的测试:
execfile("script2.py 1")
Run Code Online (Sandbox Code Playgroud)
但它没有正确接受变量.当我打印出sys.argv
script2.py时,它是对第一个脚本"['C:\ script1.py']的原始命令调用.
我真的不想改变原始脚本(即我的例子中的script2.py),因为我不拥有它.
我认为必须有办法做到这一点,我很困惑你是怎么做到的.
如何制作一个python文件来运行另一个?
例如,我有两个.py文件.我想要运行一个文件,然后让它运行另一个.py文件.
我用subprocess
模块调用不同的进程.但是,我有一个问题.
在以下代码中:
callProcess = subprocess.Popen(['ls', '-l'], shell=True)
Run Code Online (Sandbox Code Playgroud)
和
callProcess = subprocess.Popen(['ls', '-l']) # without shell
Run Code Online (Sandbox Code Playgroud)
两者都有效.阅读文档后,我开始知道这shell=True
意味着通过shell执行代码.这意味着在缺席的情况下,该过程将直接启动.
那么我应该更喜欢我的情况 - 我需要运行一个进程并获得其输出.从shell内部或外部调用它有什么好处.
我想看看在python中确定当前脚本目录的最佳方法是什么?
我发现,由于调用python代码的方法很多,很难找到一个好的解决方案.
这是一些问题:
__file__
如果脚本执行时未定义exec
,execfile
__module__
仅在模块中定义用例:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(来自另一个脚本,可以位于另一个目录中,并且可以有另一个当前目录.我知道没有完美的解决方案,但我正在寻找解决大多数情况的最佳方法.
最常用的方法是os.path.dirname(os.path.abspath(__file__))
,如果你从另一个脚本执行脚本,这实际上不起作用exec()
.
任何使用当前目录的解决方案都将失败,根据调用脚本的方式或者可以在运行的脚本中更改它,可能会有所不同.
是否可以从ipython内部运行python脚本(而不是模块)而不指示其路径?我试图设置PYTHONPATH但它似乎只适用于模块.我想执行
%run my_script.py
Run Code Online (Sandbox Code Playgroud)
不在包含该文件的目录中.
我有一个python脚本,它具有向用户发送电子邮件的功能.我执行了这个脚本,它工作正常.在另一个python脚本中我只有一个按钮,所以当我点击这个按钮时,我想要另一个发送电子邮件的python脚本来执行.我编写了以下代码:
#!/usr/bin/python
import sys
import os
import Tkinter
import tkMessageBox
top=Tkinter.Tk()
def helloCallBack():
os.system('SendEmail.py')
B=Tkinter.Button(top,text="hello",command= helloCallBack)
B.pack()
top.mainloop()
Run Code Online (Sandbox Code Playgroud)
单击按钮时出现以下错误:
sh:1:SendEmail.py:找不到.
你能让我知道这个错误的原因是什么以及如何解决它.谢谢.
我有一个脚本a.py
,在执行它时会向用户询问某些查询并以json格式构造输出.使用python子进程,我可以从另一个名为的脚本调用此脚本b.py
.一切都按预期工作,除了我无法获得变量的输出?我在Python 3中这样做.
下面给出的代码将exec
在没有编译错误的情况下通过,但会在"error"语句中导致运行时错误:
globs = {}
exec('''
def main():
print('Hello Python')
error # Makes run-time error
''', globs)
globs['main']()
Run Code Online (Sandbox Code Playgroud)
错误消息是:
Traceback (most recent call last): File "C:\work\sandbox.py", line 11, in globs['main']() File "<string>", line 4, in main NameError: name 'error' is not defined
仅位置信息File "<string>", line 4, in main
不是非常有用,例如在尝试定位可以来自文件的代码的原点时.
请注意,以上是显示问题的简化示例.在实际程序中,代码定义了在主程序中的不同位置执行的若干功能.
有没有办法从exec
"<string>"以外的其他位置提供代码,所以如果exec代码中发生异常,则会显示其他位置?
python ×9
python-3.x ×2
subprocess ×2
dirname ×1
ipython ×1
path ×1
python-2.7 ×1
pythonpath ×1
tkinter ×1