相关疑难解决方法(0)

如何从 os.system() 获取输出?

我想从中获取输出,os.system("nslookup google.com")0在打印时我总是得到, 。这是为什么,我该如何解决?(Python 3,Mac)

(我查看了如何存储它在 python 中打印到 stdout 的 os.system 的返回值? -但我不明白~我是 python 新手)

python subprocess os.system python-3.x

7
推荐指数
1
解决办法
1万
查看次数

在代码中升级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)

python pip

6
推荐指数
1
解决办法
5813
查看次数

删除空文件夹 (Python)

这是文件夹树:

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)

此扫描文件夹,并使用folders2DIGITS. 在DIGITS有编号的目录:1,2,3,4等

怎么办?尝试使用,os.rmdir但它给了我一个错误,关于字符串。其实folders2是一个列表,不是一个字符串,只是说...

python directory

6
推荐指数
4
解决办法
1万
查看次数

在subprocess.Popen中使用&&进行命令链接?

我使用的是subprocess.PopenPython了,我还没有碰到过加盟命令的一流解决方案(即foob​​ar的到来&&通过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)

python linux popen chaining python-2.7

5
推荐指数
1
解决办法
7690
查看次数

Python中的命令输出解析

我试图在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)

python python-3.x

5
推荐指数
1
解决办法
3万
查看次数

在python中运行cmd(ffmpeg)

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)

python cmd ffmpeg

5
推荐指数
3
解决办法
2万
查看次数

带有特殊字符的python 7z密码

我正在尝试使用解压缩文件,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

python 7zip unzip

5
推荐指数
1
解决办法
1845
查看次数

在python中将多个变量传递给os.system

我想将两个变量传递给os.system(),例如列出特定目录中不同格式的文件,如(ls -l testdirectory),其中switch和test目录都是可变的.我知道单变量这个有效:

option=l os.sytem('ls -%s' option)

但我不知道如何传递两个变量?

python os.system

5
推荐指数
2
解决办法
3万
查看次数

FileNotFoundError: subprocess.Popen(['dir'] (Windows 7)

我正在尝试使用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 subprocess python-3.x

5
推荐指数
1
解决办法
4248
查看次数

Python - 运行 shell 命令,获取 stdout 和 stderr 作为变量,但对用户隐藏?

我想让我的 Python 脚本运行 Linux shell 命令并将输出存储在变量中,而不向用户显示命令的输出。我已经尝试过这个os.systemsubprocess.check_outputsubprocess.runsubprocess.Popen没有os.popen运气

我当前的方法正在运行os.system("ls -l &> /tmp/test_file"),因此命令 stdout 和 stderr 通过管道传输到/tmp/test_file,然后我让我的 Python 代码将文件读取到变量中,然后将其删除。

有没有更好的方法来做到这一点,以便我可以将命令输出直接发送到变量中,而不必创建和删除文件,但对用户隐藏它?

python subprocess capture python-3.x

5
推荐指数
1
解决办法
1万
查看次数