stderr

Python模块-subprocess模块

陌路散爱 提交于 2019-12-16 17:17:25
Run()方法 >>> a = subprocess.run(['df','-h']) 文件系统 容量 已用 可用 已用% 挂载点 udev 468M 0 468M 0% /dev tmpfs 98M 7.4M 91M 8% /run /dev/sda1 39G 5.0G 32G 14% / tmpfs 488M 216K 488M 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 488M 0 488M 0% /sys/fs/cgroup tmpfs 98M 84K 98M 1% /run/user/1000 >>> a CompletedProcess(args=['df', '-h'], returncode=0) >>> a.returncode # 获取命令执行结果的状态码 0 >>> a.args # 获取命令参数列表 ['df', '-h'] 直接把命令按照列表传入 如果想要读取命令执行的结果和错误,需要通过管道 >>> a = subprocess.run(['df','-h'],stdout=subprocess.PIPE,stderr=subprocess.PIPE) >>> a.stdout # 如果命令执行成功就能读出执行结果 b'\xe6\x96\x87\xe4\xbb\xb6\xe7\xb3\xbb

网络编程

穿精又带淫゛_ 提交于 2019-12-16 11:21:10
1 .简述socket 通信原理 如上图,socket通信建立在应用层与TCP/IP协议组通信(运输层)的中间软件抽象层,它是一组接口,在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议组隐藏在Socket接口后面,对于用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。 所以,经常对用户来讲, socket就是ip+prot 即IP地址(识别互联网中主机的位置)+port是程序开启的端口号  socket通信如下: 客户端 # _*_ coding: utf-8 _*_ import socket ip_port = ('127.0.0.1',9696) link = socket.socket(socket.AF_INET,socket.SOCK_STREAM) link.connect(ip_port) print("开始发送数据") cmd = input("client请输入要发送的数据>>>>").strip() link.send(cmd.encode('utf-8')) recv_data = link.recv(1024) print("这是受到的消息:",recv_data) link.close() 服务端 # _*_ coding: utf-8 _*_ import socket ip_port = (

Shell编程—呈现数据

三世轮回 提交于 2019-12-15 20:04:09
1. 标准文件描述符 Linux用文件描述符(file descriptor)来标识每个文件对象。文件描述符是一个非负整数,可以唯一标识会话中打开的文件。每个进程一次 多可以有九个文件描述符。出于特殊目的,bash shell保留了前三个文件描述符(0、1和2): 文件描述符 缩 写 描 述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1. STDIN : 代表shell的标准输入。对终端界面来说,标准输入是键盘。 2. STDOUT : STDOUT文件描述符代表shell的标准输出。在终端界面上,标准输出就是终端显示器。 3. STDERR : STDERR文件描述符处理错误消息。STDERR文件描述符代表shell的标准错误输出。 1.1 重定向错误 1. 只重定向错误 $ ls -al test badtest test2 2> test5 -rw-rw-r-- 1 rich rich 158 2014-10-16 11:32 test2 $ cat test5 ls: cannot access test: No such file or directory ls: cannot access badtest: No such file or directory 2. 重定向错误和数据 $ ls -al test test2

python subprocess Popen

天大地大妈咪最大 提交于 2019-12-15 19:14:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> subprocess.Popen(args ,bufsize=0 ,executable=None ,stdin=None ,stdout=None ,stderr=None ,preexec_fn=None ,close_fds=False ,shell=False ,cwd=None ,env=None ,universal_newlines=False ,startupinfo=None ,creationflags=0) 参数args可以是字符串或者序列类型(如:list,元组),用于指定进程的可执行文件及其参数.如果是序列类型,第一个元素通常是可执行文件的路径.我们也可以显式的使用executeable参数来指定可执行文件的路径.在windows操作系统上,Popen通过调用 CreateProcess()来创建子进程,CreateProcess接收一个字符串参数,如果args是序列类型,系统将会通过list2cmdline()函数将序列类型转换为字符串。 参数bufsize:指定缓冲.我到现在还不清楚这个参数的具体含义,望各个大牛指点. 参数executable用于指定可执行程序.一般情况下我们通过args参数来设置所要运行的程序.如果将参数shell设为True

Shell--输入/输出重定向

北慕城南 提交于 2019-12-14 09:05:21
Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。 重定向命令列表如下: 命令 说明 command > file 将输出重定向到 file。 command < file 将输入重定向到 file。 command >> file 将输出以追加的方式重定向到 file。 n > file 将文件描述符为 n 的文件重定向到 file。 n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。 n >& m 将输出文件 m 和 n 合并。 n <& m 将输入文件 m 和 n 合并。 << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。 输出重定向 重定向一般通过在命令间插入特定的符号来实现。特别的,这些符号的语法如下所示: command1 > file1 上面这个命令执行command1然后将输出的内容存入file1。 注意任何file1内的已经存在的内容将被新内容替代。如果要将新内容添加在文件末尾,请使用

Why does jExcelAPI dump warnings in stderr and how to stop this behaviour?

一个人想着一个人 提交于 2019-12-14 02:33:55
问题 While trying to read an xls file using jExcelAPI, I find that the library dumps a lot of information in stderr, sometimes this information is not relevant. For example, this code snippet causes lots of 'Warnings' to be dumped on stderr stream: Workbook workbook = Workbook.getWorkbook(new File(flname)); //For each sheet in the workbook for (int currentSheet = 0; currentSheet < workbook.getNumberOfSheets(); currentSheet++) { Sheet sheet = workbook.getSheet(currentSheet); System.out.println(

Ignoring the first line of stderr and keeping stdout intact

会有一股神秘感。 提交于 2019-12-13 21:03:02
问题 mongodump prints a single debug message to stderr every time it is run, which is causing some unintended side effects. How do I ignore only the first line of stderr and keep everything else intact? I'm piping stdout to a file, so I can't combine stderr and stdout. 回答1: Using a process substitution, and piping stdout into rev to see that stderr is unaffected { echo stderr1 >&2; echo stdout1; echo stderr2 >&2; } 2> >(sed 1d >&2) | rev 1tuodts stderr2 来源: https://stackoverflow.com/questions

python subprocess执行shell命令

落爺英雄遲暮 提交于 2019-12-13 18:29:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> subprocess的目的就是启动一个新的进程并且与之通信。 subprocess模块中只定义了一个类: Popen。可以使用Popen来创建进程,并与进程进行复杂的交互。它的构造函数如下: class subprocess.Popen( args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0) 参数args可以是字符串或者序列类型(如:list,元组),用于指定进程的可执行文件及其参数。如果是序列类型,第一个元素通常是可执行文件的路径。我们也可以显式的使用executeable参数来指定可执行文件的路径。 subprocess.Popen(["cat","test.txt"]) subprocess.Popen("cat test.txt") 这两个之中,后者将不会工作。因为如果是一个字符串的话,必须是程序的路径才可以。(考虑unix的api函数exec,接受的是字符串

Reading error output hangs for command invoked on CMD process

吃可爱长大的小学妹 提交于 2019-12-13 08:11:26
问题 I have c# console app for ffmpeg command invocation. Here is it class Program { static void Main(string[] args) { ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe"); cmd.RedirectStandardInput = true; cmd.RedirectStandardOutput = true; cmd.RedirectStandardError = true; cmd.UseShellExecute = false; cmd.CreateNoWindow = true; cmd.WindowStyle = ProcessWindowStyle.Hidden; Process console = Process.Start(cmd); console.StandardInput.WriteLine(@"cd C:\Users\vishnu.aravind"); console.StandardInput

使用Python调用系统命令

浪尽此生 提交于 2019-12-13 00:42:15
os.system() 该函数返回命令执行结果的返回值,system()函数在执行过程中进行了以下三步操作: 1、fork一个子进程; 2、在子进程中调用exec函数去执行命令; 3、在父进程中调用wait(阻塞)去等待子进程结束。 返回0表示命令执行成功,其他表示失败。 注意:使用该函数经常会莫名其妙地出现错误,但是直接执行命令并没有问题,所以一般建议不要使用。 用法:os.system("command") os.popen() 这种调用方式是通过管道的方式来实现,函数返回是 file read 的对象,对其进行读取read、readlines等操作可以看到执行的输出。 注意:如果命令执行失败,就读取不到内容。 用法:os.popen("command") subprocess.Popen() subprocess模块被推荐用来替换一些老的模块和函数,如:os.system、os.spawn*、os.popen*等 subprocess模块目的是fork一个新的进程并与之通信,最常用是定义类Popen,使用Popen可以创建进程,并与进程进行复杂的交互。其函数原型为: class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn