我正在尝试使用batch file来运行python脚本,以便批处理会话结束时(例如终止)python脚本也将closures。 例如,如果我想做相反的事情(Python->批处理)。 我会使用subprocess模块。 我怎样才能做到这一点? 这是batch file中的相关行: python run.py %* 其中运行python脚本,但终止它,python脚本继续运行
我在Windows和Node JS / Express下,使用安装的“child_process”模块。 我需要从Node JS启动可执行文件'c:\ test \ test.exe' – 一个Windows控制台应用程序。 我可以启动非控制台应用程序,但是我遇到了控制台问题; 例如我已经尝试了这个简单的陈述: const childProcess = require('child_process'); ………….. childProcess.execFile(process.env.C_APP_EXEC_NAME); 这与“full_path \ WINWORD.EXE”正常工作,但与c:\ test \ test.exe无关。 我想补充说,我需要打开控制台,因为test.exe通过它与用户交互。 感谢帮助
我试图使用subprocess popen在后台执行一个batch file,但是当batch file中有回声时,它会停止执行。 这就是我在Python中使用的: subprocess.Popen("test.bat", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 这是一个示例batch file,即时通讯用于testing,因为我的真正的batch file失败了很多: @ECHO OFF ECHO %date% %time%: Test 1 >> test.txt ECHO Test 1 ECHO %date% %time%: Test 2 >> test.txt ECHO Test 2 执行此操作,几乎总是停在“ECHO Test 1”上,因为text.txt文件不会填写“Test 2”文本。 如果您删除或注释“ECHOtesting1”它的作品。 在我真正的batch file,这不是这么简单,它也停止后回声所以尝试多个文件。 它在手动执行batch file时起作用,因为它在回显之后继续。 我可以通过删除echo:s来做一个解决方法,但是如果你想手动运行这个batch file,那么它就不能很好地工作。 我做错了什么,或者这是如何工作?
我想通过wifi连接到一个romba机器人。 我已经成功地使用下面的代码来打开cmd并连接到wifi并发送它的密码。 这成功地连接了机器人和电脑。 我的问题是当我尝试发送更多的信息。 我只是试图一次传递一个字符。 我正在使用subprocess和pipe道function来发送数据,但是当我第二次尝试使用它时,它给了我错误“无法发送input后开始通信”有人可以指出我做错了什么? #Connects the the desired WiFi network. def connect_to_network(name): global Network #global Putty Network = Popen('netsh wlan connect ' + str(name), shell=True, stdout=PIPE, stderr=STDOUT, stdin=PIPE) password = "password" Network.communicate(input=password.encode('utf-8')) Network.stdin.close() #Putty = Application(backend="uia").start('putty.exe -raw 192.168.1.1') #Sends out character to BOT via WiFi. def WiFi_Send(action): global Network #global Putty clear_output() print("Sending: […]
我有一个简单的命令行二进制程序hello输出到STDOUT: What is your name? 并等待用户input。 接收到input后,输出: Hello, [name]! 并终止。 我想使用Python在这个程序的最终输出( "Hello, [name]!" )上运行计算,然而在最终输出之前,我希望Python脚本本质上是“二进制程序”。 换句话说,我希望Python将所有提示转发到STDOUT,然后接受用户的input并将其提供给程序。 但是我想隐藏最终的输出,所以我可以处理它并向用户显示我自己的结果。 我不想在脚本中复制hello的行为,因为这个简单的程序是我正在使用的更复杂的程序的替身。 我希望在subprocess中会有某种机制,我可以做类似于: while process.is_running(): next_char = process.stdout.read(1) if next_char == input_prompt_thing: # somehow check if the program is waiting for input user_input = raw_input(buffer) process.stdin.write(user_input) else: buffer += next_char 我一直在玩subprocess process.stdout.read(1) ,基本上已经意识到我可以使用process.stdout.read(1)在程序开始阻塞之前读取,但是我不知道如何在进程阻塞之前打破这个循环我的Python脚本。 我对控制台I / O不太熟悉,对我来说这不是一个很专业的领域,所以我开始觉得很失落。 我感谢任何帮助!
我试图读入一个文件,并产生一个散列的文件。 大多数情况下,这一切都很顺利。 但是,有几个文件我无法得到处理。 例如: file("c:\\windows\\system32\\nvvsvc.exe") 产生错误: IOError: [Errno 2] No such file or directory: 'c:\\windows\\system32\\nvvsvc.exe 同样,命令: subprocess.check_output(r"dir c:\windows\system32\nvvsvc.exe", shell = True) 产生错误: 文件未find 回溯(最近一次通话最后): 在<module>中的文件“<stdin>”,第1行 在check_output文件“C:\ Python27 \ lib \ subprocess.py”,第544行 提高CalledProcessError(retcode,cmd,output = output) subprocess.CalledProcessError:命令'dir c:\ windows \ system32 \ nvvsvc.exe'返回非零退出状态1 我尝试了很多变种,包括试图让cacls.exe承认那里有一个文件。 但是,当我退出python实例(exit())并执行dir c:\windows\system32\nvvsvc.exe ,它返回那里确实有一个文件。 一个类似的testing使用calc.exe,而不是让我可以查看它,并在Python内部散列它们都很好。 我正在运行Python 2.7。 我试图用pipe理权限(作为命令提示符的pipe理员运行)踢python,但是这不会改变任何东西。 当从python内部运行到文件系统基本假装该文件不存在python时,似乎有一些特权改变。 作为参考,所讨论的文件的所有者(还有其他类似的)是系统,文件上的cacls允许从用户,pipe理员和系统读取它。
我正在使用Windows 7上的Python编写的应用程序,它需要调用进程,并设置进程的优先级为高,如何增加或改变被称为进程的优先级与Python?
背景 我正在使用基本的文本编辑器,并需要使用Windows资源pipe理器来获取文件的path。 这是我目前的代码,但它只是打开文件 – 我需要它作为一个string返回path: import subprocess subprocess.Popen(r'explorer /select, "C:\"') 问题(S) 我将如何将它作为一个string返回path? 我将如何使用path来访问特定的文件? 例如,如果我想打开文件myFile ,但它不在我的程序所在的文件夹中,我将如何在不同的文件夹中访问该文件? 对不起模糊! 技术规格 操作系统:Windows 7 语言:Python 2.7.3
我有一个Python GUI应用程序,使用subprocess.Popen调用调用另一个Python脚本。 我在我的GUI中有一个Tkinter文本框,我想在其中显示子stream程的输出。 在OS X上,此function完美无瑕,但在Windows 7上,输出不会显示在文本框中,直到子stream程完成运行。 我怎样才能让输出在Windows上实时打印? 代码启动subprocess: p = Popen(command, stdout=PIPE, stderr=STDOUT, bufsize=1, close_fds=ON_POSIX) t = Thread(target=read_and_print, args=(p, log_output)) t.daemon = True t.start() 将输出打印到文本框的function。 这是在一个单独的线程中运行,以便GUI在执行subprocess时不会挂起。 def read_and_print(process, textarea): out = process.stdout for line in iter(out.readline, b''): textarea.insert(END, line) textarea.see(END) #this triggers an update of the text area, otherwise it doesn't update textarea.update_idletasks()
为什么Example one复制hello world到我的剪贴板,但不是Example two ? # Example one subprocess.check_output(["echo", "hello world", "|", "clip"], shell=True, stderr=subprocess.STDOUT) # Example two subprocess.check_output(["echo", "hello \n world", "|", "clip"], shell=True, stderr=subprocess.STDOUT) 另一个问题是, Example one复制hello world的引号就像这样: "hello world" 那么,如何将不带双引号的文本复制到剪贴板?