标签: os.system

为什么python不再等待os.system完成?

我有以下功能,几个月来一直很好用.我没有更新我的Python版本(除非它发生在幕后?).

def Blast(type, protein_sequence, start, end, genomic_sequence):
    result = []
    M = re.search('M', protein_sequence)
    if M:
        query = protein_sequence[M.start():]
        temp = open("temp.ORF", "w")
        print >>temp, '>blasting'
        print >>temp, query
        temp.close()
        cline = blastp(query="'temp.ORF'", db="DB.blast.txt",
                       evalue=0.01, outfmt=5, out=type + ".BLAST")
        os.system(str(cline))
        blast_out = open(type + ".BLAST")
        string = str(blast_out.read())
        DEF = re.search("<Hit_def>((E|L)\d)</Hit_def>", string)
Run Code Online (Sandbox Code Playgroud)

我收到blast_out=open(type+".BLAST")无法找到指定文件的错误.此文件作为os.system调用调用的程序输出的一部分创建.这通常需要大约30秒才能完成.但是,当我尝试运行程序时,它立即给出了我上面提到的错误.

我以为os.system()应该等待完成?
我应该以某种方式强迫等待吗?(我不想硬编码等待时间).

编辑:我已经在BLAST程序的命令行版本中运行了cline输出.一切似乎都很好.

python os.system

7
推荐指数
2
解决办法
3万
查看次数

如何通过os.system确定进程的pid

我想用一个程序启动几个子进程,即一个模块foo.py启动几个实例bar.py.

由于我有时必须手动终止进程,因此我需要进程id来执行kill命令.

即使整个设置非常"脏" pid,如果过程是通过启动进行的,还是有一种很好的pythonic方式来获取进程os.system吗?

foo.py:

import os
import time
os.system("python bar.py \"{0}\ &".format(str(argument)))
time.sleep(3)
pid = ???
os.system("kill -9 {0}".format(pid))
Run Code Online (Sandbox Code Playgroud)

bar.py:

import time
print("bla")
time.sleep(10) % within this time, the process should be killed
print("blubb")
Run Code Online (Sandbox Code Playgroud)

python linux subprocess os.system

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

如何从 os.system() 获取输出?

我想从中获取输出,os.system("nslookup google.com")但0在打印时我总是得到, 。这是为什么,我该如何解决?(Python 3,Mac)

(我查看了如何存储它在 python 中打印到 stdout 的 os.system 的返回值? -但我不明白~我是 python 新手)

python subprocess os.system python-3.x

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

check_call check_output调用和子进程模块中的Popen方法有什么实际区别?

老实说,我只是不理解"非零"状态的术语来真正解释在帮助页面上发生了什么或者意味着什么(甚至没有定义).有哪些使用python来调用其中这些进程的脚本的例子

subprocess.call subprocess.check_output subprocess.popen

真的不一样吗?你何时会使用其中任何一种,以及这些方法的消歧细节是什么?如果我想要简单的OS调用,我应该使用os.system吗?

python subprocess os.system popen

7
推荐指数
2
解决办法
6621
查看次数

为什么 os.system('cls') 不清除最近的输出?

在使用Dev-C++之前我总是使用system('cls')C语言。现在正在学习Python,使用Pycharm 2020.2.3。

我尝试使用os.system('cls'). 这是我的程序:

import os

print("clear screen")
n = int(input(""))
if n == 1:
    os.system('cls')
Run Code Online (Sandbox Code Playgroud)

我的程序没有错误,但它没有清除最近的输出。

这是我的程序的输出:

我的输出的屏幕截图

为什么不清除最近的输出似乎是什么问题?

python os.system pycharm python-3.x

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

Python,使用os.system - Python脚本是否有办法在不等待调用完成的情况下移过它?

我正在尝试使用Python(通过Django框架)进行Linux命令行调用,并尝试了os.system和os.open,但对于这两种情况,似乎Python脚本在将命令行调用作为调用后挂起用于实例化服务器(因此它永远不会"完成",因为它意味着长时间运行).我知道用其他Python代码做这样的事情你可以使用像芹菜这样的东西,但我想有一个简单的方法来让它只是做一个命令行调用而不是"绑在一起",这样它就可以移动过去,我想知道我做错了什么......感谢任何建议.

我正在这样打电话

os.system("command_to_start_server")
Run Code Online (Sandbox Code Playgroud)

还尝试过:

response = os.popen("command_to_start_server")
Run Code Online (Sandbox Code Playgroud)

python django command-line os.system

6
推荐指数
1
解决办法
3490
查看次数

从 subprocess.Popen 将参数传递给 argparse

我正在尝试使用 python 3 中的 subprocess.Popen 功能从另一个脚本(scriptB)中使用 python 2 (例如 scriptA) 调用脚本

我希望调用的脚本实现了一个 argparse 方法,该方法需要两个参数,如下所示:ScriptA(需要 python 2):

def get_argument_parser():
'''
'''
import argparse

parser = argparse.ArgumentParser("Get the args") 

parser.add_argument("-arg1", "--arg1",required = True,
                    help = "First Argument")

parser.add_argument("-arg2", "--arg2",required = True,
                    help = "Second Argument")

return parser
Run Code Online (Sandbox Code Playgroud)

现在,我使用子进程调用上述脚本,如下所示: ScriptB:

value1 = "Some value"
value2 = "Some other value"
subprocess.Popen(["C:\\Python27\\python.exe ", ScriptAPATH, " -arg1 " , value1, " -arg2 ", value2],shell = True, stdout = subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误: error: argument -arg1/--arg1 is required

接下来我尝试的是将 …

subprocess os.system python-2.x python-3.x

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

使用 os.system 函数时设置超时

首先,我想说我刚开始学习python,我想在我的python脚本中执行maven命令(见下面的部分代码)

os.system("mvn surefire:test")

但不幸的是,有时这个命令会超时,所以我想知道如何设置一个超时阈值来控制这个命令。

也就是说,如果执行时间超过 X 秒,程序将跳过命令。

更重要的是,其他有用的解决方案可以解决我的问题吗?提前致谢!

timeout os.system python-3.x

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

停止无限循环重复调用 os.system

谢谢大家看到我的帖子。

首先,以下是我的代码:

import os

print("You can create your own message for alarm.")
user_message = input(">> ")

print("\n<< Sample alarm sound >>")

for time in range(0, 3):
    os.system('say ' + user_message) # this code makes sound.

print("\nOkay, The alarm has been set.")

"""
##### My problem is here #####
##### THIS IS NOT STOPPED #####

while True:
    try:
        os.system('say ' + user_message)
    except KeyboardInterrupt:
        print("Alarm stopped")
        exit(0)
"""
Run Code Online (Sandbox Code Playgroud)

我的问题是Ctrl + C 不起作用!

我尝试改变try块的位置,并制作信号(SIGINT)捕捉功能。

但那些也不起作用。

我看过/sf/answers/583464871/、/sf/answers/2304614931/ …

python loops os.system try-catch python-3.x

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

os.system 不工作,但在命令提示符中输入相同的内容可以工作

我正在尝试使用命令提示符运行 python abaqus

os.system('abaqus CAE noGUI=ODBMechens')
Run Code Online (Sandbox Code Playgroud)

它似乎没有运行任何东西,但是如果我自己进入命令提示符并输入

abaqus CAE noGUI=ODBMechens
Run Code Online (Sandbox Code Playgroud)

有用。我在 Windows 10 上使用 python 2.7。谢谢

python os.system command-prompt abaqus

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