我想从中获取输出,os.system("nslookup google.com")但0在打印时我总是得到, 。这是为什么,我该如何解决?(Python 3,Mac)
(我查看了如何存储它在 python 中打印到 stdout 的 os.system 的返回值? -但我不明白~我是 python 新手)
我的问题涉及这个问题:在代码中安装python模块,但涉及升级模块.
我试过了
packages=['apscheduler','beautifulsoup4','gdata']
def upgrade(packages):
for package in packages:
pip.main(['install --upgrade', package])
Run Code Online (Sandbox Code Playgroud)
和
def upgrade(packages):
for package in packages:
pip.main(['install', package + ' --upgrade'])
Run Code Online (Sandbox Code Playgroud) 这是文件夹树:
FOLDER\\
\\1\\file
\\2\\file
\\3\\
\\4\\file
Run Code Online (Sandbox Code Playgroud)
脚本应该扫描(循环)FOLDER 中的每个文件夹并检查子文件夹是否为空。如果是,则必须将其删除。
到目前为止,我的代码是这样的:
folders = ([x[0] for x in os.walk(os.path.expanduser('~\\Desktop\\FOLDER\\DIGITS\\'))])
folders2= (folders[1:])
Run Code Online (Sandbox Code Playgroud)
此扫描文件夹,并使用folders2从DIGITS. 在DIGITS有编号的目录:1,2,3,4等
怎么办?尝试使用,os.rmdir但它给了我一个错误,关于字符串。其实folders2是一个列表,不是一个字符串,只是说...
我使用的是subprocess.Popen用Python了,我还没有碰到过加盟命令的一流解决方案(即foobar的到来&&通过bizbang) Popen。
我可以这样做:
p1 = subprocess.Popen(["mmls", "WinXP.E01"], stdout=subprocess.PIPE)
result = p1.communicate()[0].split("\n")
for line in result:
script_log.write(line)
script_log.write("\n")
p1 = subprocess.Popen(["stat", "WinXP.E01"], stdout=subprocess.PIPE)
result = p1.communicate()[0].split("\n")
for line in result:
script_log.write(line)
Run Code Online (Sandbox Code Playgroud)
但这在美学上确实不是很令人满意(尤其是当我通过菊链多个命令时)Popen。
我想在尽可能少的命令块中复制此输出。
not@work ~/ESI/lab3/images $ mmls WinXP.E01 && echo -e "\n" && stat WinXP.E01
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000000 …Run Code Online (Sandbox Code Playgroud) 我试图在Windows 7上编写一个Python脚本,它读取命令的输出ipconfig /displaydns并尝试从输出中获取一些值.
输出ipconfig /displaydns"是这样的,
Windows IP Configuration
9.a.c.e.x-0.19-430f5091.531.1518.1b8d.2f4a.210.0.k1m2t5a3245k242qmfp75spjkv.avts.
Record Name . . . . . : 9.a.c.e.x-0.19-430f5091.531.1518.1b8d.2f4a.210.0.k1m2t5a3245k242qmfp75spjkv.avts.
Record Type . . . . . : 1
Time To Live . . . . : 294
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 127.0.0.16
Run Code Online (Sandbox Code Playgroud)
我正在获取此输出并将其保存在变量中,如下所示,
output = subprocess.check_output("ipconfig /displaydns", shell=True)
Run Code Online (Sandbox Code Playgroud)
当我打印"输出"时,我得到以下内容
b'\r\nWindows IP Configuration\r\n\r\n 9.a.c.e.x-0.19-430f5091.531.1518.1b8d.2f4a.210.0.k1m2t5a3245k242qmfp75spjkv.avts.\r\n ----------------------------------------\r\n Record …Run Code Online (Sandbox Code Playgroud) Atm我把它作为我的代码,第一行似乎运行良好,但第二行给出了错误.
os.chdir('C://Users/Alex/Dropbox/code stuff/test')
subprocess.call(['ffmpeg', '-i', 'test%d0.png', 'output.avi'])
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "C:\Users\Alex\Dropbox\code stuff\solarsystem.py", line 56, in <module>
subprocess.call(['ffmpeg', '-i', 'test%d0.png', 'output.avi'])
File "C:\Python27\lib\subprocess.py", line 524, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 711, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 948, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用解压缩文件,7z.exe密码上包含特殊字符
例如 &)kra932(lk0¤23
通过执行以下命令:
subprocess.call(['7z.exe', 'x', '-y', '-ps^&)kratsaslkd932(lkasdf930¤23', 'file.zip'])
Run Code Online (Sandbox Code Playgroud)
7z.exe 可以正常启动,但说密码错误。
这是我创建的文件,它使我发疯。
如果我在Windows命令行上运行命令,它将运行正常
7z.exe x -y -ps^&)kratsaslkd932(lkasdf930¤23 file.zip
Run Code Online (Sandbox Code Playgroud)
如何使python转义&字符?
@Wim出现问题并在密码上,因为当我执行时
7z.exe x -y -ps^&)kratsaslkd932(lkasdf930¤23 file.zip
Run Code Online (Sandbox Code Playgroud)
它说')kratsaslkd932(lkasdf930¤23'
使用python 2.76的命令无效,由于公司工具只能在2.76上运行,因此无法升级到3.x
我想将两个变量传递给os.system(),例如列出特定目录中不同格式的文件,如(ls -l testdirectory),其中switch和test目录都是可变的.我知道单变量这个有效:
option=l
os.sytem('ls -%s' option)
但我不知道如何传递两个变量?
我正在尝试使用subprocess.Popenshell 命令,因为与其他命令相比,它在管道方面似乎具有更大的灵活性subprocess.run
我从一些简单的例子开始,但我得到了FileNotFoundError:
有人告诉我,shell = True如果我将论点作为正确的列表,则没有必要。然而它似乎不起作用。
这是我的尝试:
import subprocess
p1 =subprocess.Popen(['dir'], stdout =subprocess.PIPE)
output = p1.communicate[0]
p = subprocess.Popen([ "dir", "c:\\Users"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
outputs = p.communicate()
Run Code Online (Sandbox Code Playgroud)
两者都导致FileNotFoundError
我想让我的 Python 脚本运行 Linux shell 命令并将输出存储在变量中,而不向用户显示命令的输出。我已经尝试过这个os.system,subprocess.check_outputsubprocess.run但subprocess.Popen没有os.popen运气
我当前的方法正在运行os.system("ls -l &> /tmp/test_file"),因此命令 stdout 和 stderr 通过管道传输到/tmp/test_file,然后我让我的 Python 代码将文件读取到变量中,然后将其删除。
有没有更好的方法来做到这一点,以便我可以将命令输出直接发送到变量中,而不必创建和删除文件,但对用户隐藏它?
python ×10
python-3.x ×4
subprocess ×3
os.system ×2
7zip ×1
capture ×1
chaining ×1
cmd ×1
directory ×1
ffmpeg ×1
linux ×1
pip ×1
popen ×1
python-2.7 ×1
unzip ×1