相关疑难解决方法(0)

在Python中调用外部命令

如何在Python脚本中调用外部命令(就像我在Unix shell或Windows命令提示符下键入它一样)?

python shell terminal command subprocess

4553
推荐指数
57
解决办法
325万
查看次数

如何在Python中更改目录(cd)?

cd 如在shell命令中更改工作目录.

如何在Python中更改当前的工作目录?

python

641
推荐指数
10
解决办法
100万
查看次数

在Python中运行Bash命令

在我的本地机器上,我运行一个包含这一行的python脚本

bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
os.system(bashCommand)
Run Code Online (Sandbox Code Playgroud)

这很好用.

然后我在服务器上运行相同的代码,我收到以下错误消息

'import site' failed; use -v for traceback
Traceback (most recent call last):
File "/usr/bin/cwm", line 48, in <module>
from swap import  diag
ImportError: No module named swap
Run Code Online (Sandbox Code Playgroud)

所以我所做的就是插入一个"print bashCommand",它在使用os.system()运行它之前打印我,而不是终端中的命令.

当然,我再次得到错误(由os.system(bashCommand)引起)但在该错误之前它在终端中打印命令.然后我只是复制了那个输出并在终端上做了一个复制粘贴,然后点击回车就可以了......

有没有人知道发生了什么?

python bash

260
推荐指数
8
解决办法
47万
查看次数

如何在Python中运行另一个脚本而不等待它完成?

我正在为用户创建一个小仪表板,以便他能够运行特定的工作.我正在使用Django所以我希望他能够单击一个链接来启动作业,然后将页面返回给他,并显示作业正在运行的消息.该工作的结果将在稍后通过电子邮件发送给他.

我相信我应该使用,subprocess.Popen但我不确定.所以在伪代码中,这就是我想要做的:

if job == 1:
    run script in background: /path/to/script.py
    return 'Job is running'
Run Code Online (Sandbox Code Playgroud)

python django subprocess background process

39
推荐指数
2
解决办法
4万
查看次数

Python Popen:同时写入stdout和日志文件

我正在使用Popen调用一个shell脚本,该脚本不断将其stdout和stderr写入日志文件.有没有办法连续同时输出日志文件(到屏幕),或者让shell脚本同时写入日志文件和标准输出?

我基本上想在Python中做这样的事情:

cat file 2>&1 | tee -a logfile #"cat file" will be replaced with some script
Run Code Online (Sandbox Code Playgroud)

再次,这将stderr/stdout连接到tee,将它写入stdout和我的日志文件.

我知道如何在Python中将stdout和stderr写入日志文件.我被困在哪里是如何将这些复制回屏幕:

subprocess.Popen("cat file", shell=True, stdout=logfile, stderr=logfile)
Run Code Online (Sandbox Code Playgroud)

当然我可以做这样的事情,但有没有办法在没有tee和shell文件描述符重定向的情况下做到这一点?:

subprocess.Popen("cat file 2>&1 | tee -a logfile", shell=True)
Run Code Online (Sandbox Code Playgroud)

python subprocess popen

38
推荐指数
3
解决办法
4万
查看次数

如何使用pid从Python终止进程?

我正在尝试在python中编写一些简短的脚本,这将在子进程中启动另一个python代码,如果尚未启动,则终止终端和应用程序(Linux).

所以它看起来像:

#!/usr/bin/python
from subprocess import Popen

text_file = open(".proc", "rb")
dat = text_file.read()
text_file.close()

def do(dat):

    text_file = open(".proc", "w")
    p = None

    if dat == "x" :

        p = Popen('python StripCore.py', shell=True)
        text_file.write( str( p.pid ) )

    else :
        text_file.write( "x" )

        p = # Assign process by pid / pid from int( dat )
        p.terminate()

    text_file.close()

do( dat )
Run Code Online (Sandbox Code Playgroud)

应用程序从文件".proc"读取的pid命名过程缺乏知识的问题.另一个问题是解释器说名为dat的字符串不等于"x" ??? 我错过了什么?

python linux terminal process

38
推荐指数
1
解决办法
9万
查看次数

从Python启动一个完全独立的过程

我正在尝试从python启动一个完全独立的进程.我不能使用像os.startfile这样简单的东西,因为我需要传递参数.目前我正在使用subprocess.popen,它让我90%的方式.

args = ["some_exe.exe", "some_arg", "another_arg"]
subprocess.Popen(args, creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

使用带有分离创建标志和std*管道的popen会启动一个新进程,该进程在父进程终止后继续存在.这一切都很好.问题是新的'子'进程仍然保留了父进程的幻象句柄.因此,如果我尝试卸载父exe(我的python脚本通过pyinstaller捆绑到exe),msiexec抱怨父exe仍在使用中.

因此,目标是生成一个完全独立的进程来运行"some_exe.exe",它没有任何句柄回原始进程.

注意:这适用于Windows XP及更高版本.我正在开发Win7.

python windows-installer popen

29
推荐指数
1
解决办法
1万
查看次数

将当前的Python程序带到后台

python脚本将信息打印到屏幕,然后应该转到后台.

如何从脚本本身做到这一点?

python linux background

22
推荐指数
2
解决办法
6293
查看次数

如何远程更新Python应用程序

将更改推送到用Python编写的程序的最佳方法是什么?我有一个用Python编写的软件,会定期更新.最好的方法是什么?所有机器都将安装Windows 7.

另外,请原谅我的问题含糊不清.这将是我第一次实施更新程序.随意提及您希望我添加的细节.

python packaging download remote-access software-update

19
推荐指数
2
解决办法
1万
查看次数

如何在后台启动和运行外部脚本?

我尝试了这两种方法:

os.system("python test.py")

subprocess.Popen("python test.py", shell=True)
Run Code Online (Sandbox Code Playgroud)

两种方法都需要等到test.py完成才能阻止主进程.我知道"nohup"可以胜任这项工作.是否有Python方法来启动test.py或任何其他shell脚本并让它在后台运行?

假设test.py是这样的:

for i in range(0, 1000000):
    print i
Run Code Online (Sandbox Code Playgroud)

os.system()或subprocess.Popen()都将阻止主程序,直到显示1000000行输出.我想要的是让test.py以静默方式运行并仅显示主程序输出.当test.py仍在运行时,主程序可能会安静.

python external-process background-process

11
推荐指数
1
解决办法
5万
查看次数