与我的另一个问题相同的情况: Python:在Windows上启动新的命令提示符并等待它完成/退出,除非我需要它在Linux上工作。 如果你不想阅读另一个问题:我想打开一些新的terminal窗口,并且每个都执行一个命令,我希望父级python程序等到所有terminal窗口closures。 这样做: os.system("gnome-terminal -e {command}") 打开一个新的terminal窗口,但程序不会等待。 使用p = Popen() p.wait() p = Popen()和p.wait()不起作用,因为gnome-terminal命令立即完成。
我有一个python脚本test.py: print "first" import os os.system("echo second") 在Linux命令行我执行 python test.py 它返回: first second 然后我执行 python test.py > test.out; cat test.out 哪个返回 second first 如何redirect输出使得os.system调用在打印语句之前打印?
现在我使用os.stat(path).st_dev来获取设备ID。 但是对于同一个物理驱动器上的逻辑磁盘,id似乎是不同的。 所以它实际上并不适合我。 有没有更好的或直接的解决scheme呢。
我有我的服务器上运行这样的python脚本: python script.py & 脚本工作正常,但不断向脚本添加新的东西,并重新运行它,有些日子没有任何问题运行几天,但有时脚本停止运行( 不是内存不足),但自从我开始脚本作为背景我不知道如何检查导致脚本停止运行的exception或错误。 我在一个运行在亚马逊的Ubuntu服务器上。 有关如何处理这种不便的build议?
我陷入了一个小问题: 我有一个网站来pipe理不同用户的video文件。 每个用户都可以将video上传到我不想更改的个人文件夹,因为我不想混淆来自不同用户的文件。 上传video文件后,我会调用一个应创build缩略图的subprocess 。 subprocess由于ffmpeg中的错误而失败,似乎与缺less写入权限有关。 上传的文件和包含的文件夹属于www-data。 代码: command = ("ffmpeg -ss 00:00:10 -i %s -dframes 1 %s -y" % (video_path, image_path)).split() subprocess.call(command) FFMPEG似乎作为一个不同的用户运行,因为它只适用于目标文件夹有777权限。 否则,会失败,并显示以下消息 av_interleaved_write_frame(): I/O error occurred Usually that means that input file is truncated and/or corrupted. 如果我touch图像文件,而不是通过ffmpeg创build它,那么文件夹是否具有775或777并不重要。生成的文件也属于www-data,这意味着子stream程本身以www-data的forms运行,不是吗? 我想创build一个具有777权限的子文件夹,但我不喜欢它,原因有两个:此文件夹必须dynamic创build,因为我想能够创build新用户(并在我的上传文件夹中生成新的子文件夹) 。 无论如何,777权限并不是一个好的解决scheme。 你有什么build议,我必须改变,所以ffmpeg可以写入文件夹,而无需打开安全漏洞,并且在创build新的用户/文件夹时不必触摸任何东西?
我有一个Python脚本来启动这样的任务: import os os.system("./a.sh") do_c() 但是a.sh是启动其他程序的bash脚本。 在所有已启动的脚本准备就绪之前,bash脚本本身似乎已经准备就绪。 在执行do_c()之前,如何等待所有脚本(subprocess)准备就绪? 澄清:当我准备好了,我的意思是完成/退出。 例 run.py 这个文件可以改变。 但不要依赖睡眠,因为我不知道a.py和b.py花多less时间。 #!/usr/bin/env python import os from time import sleep print("Started run.py") os.system("./a.py") print("a is ready.") print("Now all messages should be there.") sleep(30) a.py 这可能不会被修改: #!/usr/bin/env python import subprocess import sys print(" Started a.py") pid = subprocess.Popen([sys.executable, "b.py"]) print(" End of a.py") b.py 这可能不会被修改: […]
考虑下面的python脚本 #test.py import sys inputfile=sys.argv[1] with open(inputfile,'r') as f: for line in f.readlines(): print line with open(inputfile,'r') as f: for line in f.readlines(): print line 现在我想在一个替代过程上运行test.py ,例如, python test.py <( cat file | head -10) 看来第二个f.readlines返回空。 为什么是这样的,有没有办法做到这一点,而不必指定两个input文件?
如何在矩形内添加文本? 我正在使用下面的代码,并在canvas中添加一个标签,希望它会显示在矩形内。 import kivy from kivy.app import App from kivy.uix.anchorlayout import AnchorLayout from kivy.uix.gridlayout import GridLayout from kivy.uix.label import Label from kivy.uix.video import Video from kivy.uix.relativelayout import RelativeLayout from kivy.graphics import * class MyApp(App): def build(self): r = AnchorLayout() f = RelativeLayout() g = GridLayout(cols=3, rows=5) v = Video(source='driver.mp4', state='play', options={'eos':'loop'}) l1 = Label(text="jenkins", font_size=32) […]
我在我的Ubuntu机器上安装了不同的python版本。 默认版本是2.7。 所以,当我安装任何新的Python模块,例如使用: #apt-get install python-nfqueue 它只会被默认版本(2.7) 我怎样才能安装其他版本的新模块? 有没有办法使用apt-get安装? 谢谢!
我知道Tkinter不是很现代,不是很酷,也许使用PyQt或更好 但是对于我来说,Tkinter在Ubuntu(Linux)中看起来并不那么难看。 看起来python的Tkinter酿造版本(在OS X中)内置的主题编译和看起来不错: 但是Ubuntu的Tkinter让我哭了: 我已经阅读了好主题,我需要使用ttk,但我不知道如何。 我的代码如下所示: from Tkinter import * class App(): def __init__(self, master): frame = Frame(master) frame.pack() master.title("Just my example") self.label = Label(frame, text="Type very long text:") self.entry = Entry(frame) self.button = Button(frame, text="Quit", fg="red", width=20, command=frame.quit) self.slogan = Button(frame, text="Hello", width=20, command=self.write_slogan) self.label.grid(row=0, column=0) self.entry.grid(row=0, column=1) self.slogan.grid(row=1, column=0) self.button.grid(row=1, column=1) def […]