我正在使用此代码从外部程序获取标准输出:
>>> from subprocess import *
>>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]
Run Code Online (Sandbox Code Playgroud)
communic()方法返回一个字节数组:
>>> command_stdout
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
Run Code Online (Sandbox Code Playgroud)
但是,我想将输出作为普通的Python字符串.所以我可以这样打印:
>>> print(command_stdout)
-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1
-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2
Run Code Online (Sandbox Code Playgroud)
我认为这是binascii.b2a_qp()方法的用途,但是当我尝试它时,我又得到了相同的字节数组:
>>> binascii.b2a_qp(command_stdout)
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
Run Code Online (Sandbox Code Playgroud)
有人知道如何将字节值转换回字符串吗?我的意思是,使用"电池"而不是手动操作.而且我希望它能用于Python 3.
我想编写一个函数来执行shell命令并将其输出作为字符串返回,无论是错误还是成功消息.我只想获得与命令行相同的结果.
什么是代码示例会做这样的事情?
例如:
def run_command(cmd):
# ??????
print run_command('mysqladmin create test -uroot -pmysqladmin12')
# Should output something like:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'
Run Code Online (Sandbox Code Playgroud) 我刚安装的Python模块:construct并statlib用setuptools这样的:
# Install setuptools to be able to download the following
sudo apt-get install python-setuptools
# Install statlib for lightweight statistical tools
sudo easy_install statlib
# Install construct for packing/unpacking binary data
sudo easy_install construct
Run Code Online (Sandbox Code Playgroud)
我希望能够(以编程方式)检查他们的版本.是否python --version可以从命令行运行?
我的python版本是2.7.3.
我试过谷歌搜索答案,但没有运气.
我需要使用我的工作超级计算机服务器,但是为了运行我的python脚本,它必须通过shell脚本执行.
例如,我想job.sh执行python_script.py
如何实现这一目标?
Python中Ruby和Perl中的反引号相当于什么?也就是说,在Ruby中我可以这样做:
foo = `cat /tmp/baz`
Run Code Online (Sandbox Code Playgroud)
Python中的等效语句是什么样的?我已经尝试os.system("cat /tmp/baz")但是将结果置于标准输出并返回给我该操作的错误代码.
我希望stdout在运行os.system调用后获取变量.
让我们以此行为例:
batcmd="dir"
result = os.system(batcmd)
Run Code Online (Sandbox Code Playgroud)
result将包含错误代码(stderr 0在Windows下或1在某些linux下用于上面的示例).
如何stdout在执行的命令中不使用重定向来获取上述命令?
在python中,我可以使用os或subprocess运行一些系统命令.问题是我无法将输出作为字符串.例如:
>>> tmp = os.system("ls")
file1 file2
>>> tmp
0
Run Code Online (Sandbox Code Playgroud)
我有一个旧版本的子进程没有函数check_out,我更喜欢一个不需要更新该模块的解决方案,因为我的代码将运行在我没有完全管理员权限的服务器上.
这个问题似乎微不足道,但我找不到一个简单的解决方案
我试图在python脚本中自动将变量的内容复制到剪贴板.因此,创建一个包含字符串的变量,我想将该字符串复制到剪贴板.
有没有办法用Pyclips或
os.system("echo '' | pbcopy")
Run Code Online (Sandbox Code Playgroud)
我已经尝试传递字符串应该去的变量,但这对我来说没有用.
我正在尝试获得以下输出pwd:
#!python
import os
pwd = os.system("pwd")
print (pwd)
Run Code Online (Sandbox Code Playgroud)
它打印0,这是成功的退出状态而不是路径.我怎样才能获得这条路?
我想知道如何在已经运行的时候停止当前的python脚本.
要清楚,我想用我自己的python脚本编写它.所以首先,在main方法中,它将检查我的python脚本是否已经运行.如果它正在运行,我想退出并显示错误消息.
目前我正在尝试此代码:
if os.system("ps ax | grep sample_python.py") == True:
print "fail"
exit(0)
else:
print "pass"
Run Code Online (Sandbox Code Playgroud)
上面的代码看起来像是grepping python名称..但它总是转到else循环而不是进入if循环并退出..
因此,出于测试目的,我运行我的脚本,并在另一个终端上再次运行我的脚本.第一个脚本不会停止,但第二个python不会进入if循环打印出错误消息.
我怎样才能解决这个问题?
好吧,我发现了一个愚蠢的事情,我想看看是否有人可以帮助我绕过它..所以我的观点是杀死刚开始的python,如果另一个python正在运行..但是愚蠢的事情是..因为我我正在运行我的python并在这个python中运行一个检查编码..它将一直退出..因为我一启动python PID将被创建并将运行...
所以.. python启动 - > pid创建并运行 - >检查python是否正在运行 - >是的python正在运行 - >退出.
我想看看是否有办法进行python启动 - >检查python是否已经运行 - >如果正在运行则杀死当前的python而不是正在运行的python.
我正在使用此 API 来获取公司数据:https ://github.com/vkruoso/receita-tools
在这里你可以看到注册表是如何来到我这里的(看起来像一个json结构):https ://www.receitaws.com.br/v1/cnpj/27865757000102
我可以使用以下命令下载它:
cadastro = os.system("curl -X GET https://www.receitaws.com.br/v1/cnpj/27865757000102"
Run Code Online (Sandbox Code Playgroud)
如果我运行type(cadastro)它就会出现class 'int'在我面前。我想把它变成一个数据框。我怎么能这么做呢?
python ×12
shell ×3
backticks ×1
command-line ×1
get ×1
json ×1
linux ×1
os.system ×1
pandas ×1
python-2.7 ×1
python-3.x ×1
stderr ×1
stdout ×1
string ×1
subprocess ×1
unix ×1