我有一个脚本,我用popen启动一个shell命令.问题是脚本不会等到popen命令完成后立即继续.
om_points = os.popen(command, "w")
.....
Run Code Online (Sandbox Code Playgroud)
如何判断我的Python脚本要等到shell命令完成?
我写了一个Python脚本,最终应该关闭计算机.
这一行是其中的一部分:
os.system("shutdown /p")
Run Code Online (Sandbox Code Playgroud)
它会进行某种关闭,但仍保留在开启的Windows控制面板上(用户可以切换计算机用户).
有没有办法完全关闭电脑?
我尝试过其他os.system("shutdown ___")方法但没有成功.
还有其他方法可能会有所帮助吗?
我有以下功能,几个月来一直很好用.我没有更新我的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脚本,它使用应用程序pdftk几次来执行一些操作.
例如,我可以在windows命令行shell中使用pdftk来合并两个pdf文件,如下所示:
pdftk 1.pdf 2.pdf cat output result.pdf
Run Code Online (Sandbox Code Playgroud)
我想在我的Python脚本中执行上述操作.这是我尝试这样做的方式:
os.system('pdftk 1.pdf 2.pdf cat output result.pdf')
Run Code Online (Sandbox Code Playgroud)
上面的pdftk命令在Windows shell中完美运行.但是,当我尝试使用Python执行它时,它无法打开输入文件(1.pdf和2.pdf)os.system().这是我在尝试使用Python执行命令时从pdftk获得的错误消息os.system():
错误:无法打开PDF文件:1.pdf
错误:无法打开PDF文件:2.pdf
为什么会这样?我该如何解决?
请注意:我知道有更好的方法将pdf文件与Python合并.我的问题不是关于合并pdf文件.那只是一个玩具的例子.我想要实现的是使用Python执行pdftk和其他命令行应用程序的能力.
我在一个程序中有一个python代码,它打开一个cmd窗口并运行另一个程序.代码如下:
os.chdir('C:/Abaqus_JOBS' + JobDir)
os.system('abaqus job=' + JobName + '-3_run_rel2 user=FalseworkNmm41s interactive')
Run Code Online (Sandbox Code Playgroud)
现在一切正常但是我在cmd窗口中出现错误,然后它很快关闭,不让我看到错误是什么.如何阻止此cmd窗口关闭?
我在我的项目中使用 Imagemagick 进行图像增强。由于我是 Imagemagick 的新手,因此我开始使用此包的命令行参数。为了进一步处理,我需要将以下命令更改为Python代码。
convert sample.jpg -blur 2x1 -sharpen 0x3 -sharpen 0x3 -quality 100 -morphology erode diamond -auto-orient -enhance -contrast -contrast-stretch 0 -gamma .45455 -unsharp 0.25x0.25+8+0.065 -fuzz 2% output.jpg
Run Code Online (Sandbox Code Playgroud)
我认为使用 wand 包是可能的。但是是否可以转换上述命令中使用的所有参数。任何帮助深表感谢。谢谢
我正在尝试采用一种简单的方法来跟踪我想使用 python 中的 os 模块运行的定期 mysqldump 命令。我已经写了这个,但在测试中它不会引发异常,即使 mysqldump 命令完成时出现错误也是如此。我对 python 还很陌生,所以我可能会非常接近这个问题,但我想我会尝试指出正确的方向。
db_dump = "mysqldump -u %s -p%s --socket=source_socket --databases %s | mysql -u %s -p%s --socket=dest_socket" % (db_user, db_pass, ' '.join(db_list), db_user, db_pass)
try:
os.system(db_dump)
except:
logging.error("databases did not dump")
else:
logging.info("database dump complete")
Run Code Online (Sandbox Code Playgroud) 在使用该subprocess.call方法的Python中是否有更高效或更快的效果?我注意到一年前有一个SO问题(Python子进程模块比命令(弃用)慢得多)除了由于Python删除了替代品而导致折旧,所以我想看看这是否是现在唯一的,因此最快意味着从Python中调用shell命令.具体来说,我正在运行以下命令:
subprocess.call( "foo" 的,壳=真)
或者我应该使用os?
谢谢.
我想输入一个电话号码,raw_input并在我的bash命令中使用此变量来发送消息.我不知道如何设置变量$ Phonenumber.没有RAW输入,它就像一个魅力.我使用Python 2.7.
import os
Phonenumber = raw_input("Number?)
os.system("yowsup-cli demos --login PHONE:PASSWORD= --send '$Phonenumber' 'MESSAGE'")
Run Code Online (Sandbox Code Playgroud) 似乎subprocess.Popen ()和os.fork()都能够创建子进程.但我想知道两者之间的区别.你什么时候使用哪一个?我试着查看他们的源代码,但是我在我的机器上找不到fork()的源代码,并且不完全清楚Popen如何在Unix机器上工作.
有人可以详细说明吗?
谢谢