[英]Subprocess checkoutput is not returning output for help command?
Here I am trying to read output for regular help cmd on windows but I am getting error subprocess.CalledProcessError: Command 'help' ` returned non-zero exit status 1 is there anything I can do to fix this here在这里,我试图在 Windows 上读取常规帮助 cmd 的输出,但出现错误subprocess.CalledProcessError: Command 'help' ` returned non-zero exit status 1有什么办法可以解决这个问题吗
With the same command if I try with systeminfo keyword I am getting the output , why does it returns values for systeminfo but not for cmd keyword使用相同的命令,如果我尝试使用systeminfo关键字我得到输出,为什么它返回systeminfo的值而不是cmd关键字的值
import subprocess
calling_output = subprocess.check_output(
"help", shell=True, stderr=subprocess.STDOUT)
print (calling_output)
Expected Output预期产出
For more information on a specific command, type HELP command-name
ASSOC Displays or modifies file extension associations.
ATTRIB Displays or changes file attributes.
BREAK Sets or clears extended CTRL+C checking.
BCDEDIT Sets properties in boot database to control boot loading.
CACLS Displays or modifies access control lists (ACLs) of files.
CALL Calls one batch program from another.
CD Displays the name of or changes the current directory.
CHCP Displays or sets the active code page number.
CHDIR Displays the name of or changes the current directory.
CHKDSK Checks a disk and displays a status report.
CHKNTFS Displays or modifies the checking of disk at boot time.
CLS Clears the screen.
CMD Starts a new instance of the Windows command interpreter.
COLOR Sets the default console foreground and background colors.
COMP Compares the contents of two files or sets of files.
COMPACT Displays or alters the compression of files on NTFS partitions.
CONVERT Converts FAT volumes to NTFS. You cannot convert the
current drive.
COPY Copies one or more files to another location.
DATE Displays or sets the date.
DEL Deletes one or more files.
DIR Displays a list of files and subdirectories in a directory.
DISKPART Displays or configures Disk Partition properties.
DOSKEY Edits command lines, recalls Windows commands, and
creates macros.
DRIVERQUERY Displays current device driver status and properties.
ECHO Displays messages, or turns command echoing on or off.
ENDLOCAL Ends localization of environment changes in a batch file.
ERASE Deletes one or more files.
EXIT Quits the CMD.EXE program (command interpreter).
FC Compares two files or sets of files, and displays the
differences between them.
FIND Searches for a text string in a file or files.
FINDSTR Searches for strings in files.
FOR Runs a specified command for each file in a set of files.
FORMAT Formats a disk for use with Windows.
FSUTIL Displays or configures the file system properties.
FTYPE Displays or modifies file types used in file extension
associations.
GOTO Directs the Windows command interpreter to a labeled line in
a batch program.
GPRESULT Displays Group Policy information for machine or user.
GRAFTABL Enables Windows to display an extended character set in
graphics mode.
HELP Provides Help information for Windows commands.
ICACLS Display, modify, backup, or restore ACLs for files and
directories.
IF Performs conditional processing in batch programs.
LABEL Creates, changes, or deletes the volume label of a disk.
MD Creates a directory.
MKDIR Creates a directory.
MKLINK Creates Symbolic Links and Hard Links
MODE Configures a system device.
MORE Displays output one screen at a time.
MOVE Moves one or more files from one directory to another
directory.
OPENFILES Displays files opened by remote users for a file share.
PATH Displays or sets a search path for executable files.
PAUSE Suspends processing of a batch file and displays a message.
POPD Restores the previous value of the current directory saved by
PUSHD.
PRINT Prints a text file.
PROMPT Changes the Windows command prompt.
PUSHD Saves the current directory then changes it.
RD Removes a directory.
RECOVER Recovers readable information from a bad or defective disk.
REM Records comments (remarks) in batch files or CONFIG.SYS.
REN Renames a file or files.
RENAME Renames a file or files.
REPLACE Replaces files.
RMDIR Removes a directory.
ROBOCOPY Advanced utility to copy files and directory trees
SET Displays, sets, or removes Windows environment variables.
SETLOCAL Begins localization of environment changes in a batch file.
SC Displays or configures services (background processes).
SCHTASKS Schedules commands and programs to run on a computer.
SHIFT Shifts the position of replaceable parameters in batch files.
SHUTDOWN Allows proper local or remote shutdown of machine.
SORT Sorts input.
START Starts a separate window to run a specified program or command.
SUBST Associates a path with a drive letter.
SYSTEMINFO Displays machine specific properties and configuration.
TASKLIST Displays all currently running tasks including services.
TASKKILL Kill or stop a running process or application.
TIME Displays or sets the system time.
TITLE Sets the window title for a CMD.EXE session.
TREE Graphically displays the directory structure of a drive or
path.
TYPE Displays the contents of a text file.
VER Displays the Windows version.
VERIFY Tells Windows whether to verify that your files are written
correctly to a disk.
VOL Displays a disk volume label and serial number.
XCOPY Copies files and directory trees.
WMIC Displays WMI information inside interactive command shell.
I don't understand from your question what command you are actually trying to run, nor do I have or use Windows, however I get the sense that your command is exiting with an error that is upsetting you.从您的问题中我不明白您实际上要运行什么命令,我也没有或使用 Windows,但是我感觉到您的命令正在退出并出现令您不安的错误。
If commandX
fails on macOS or Linux , the normal thing to do is run a second command after it that will succeed and so the caller will not get upset.如果
commandX
在macOS或Linux上失败,正常的做法是在它之后运行第二个命令,它会成功,因此调用者不会感到不安。 So maybe you can try that technique:所以也许你可以尝试这种技术:
commandX # this fails
commandX || true # this succeeds
I see that you are using shell=True
and that Windows can do that here so you might want:我看到您正在使用
shell=True
并且 Windows 可以在此处执行此操作,因此您可能想要:
commandX || echo # should succeed even if commandX fails
For your requirement you can use popen根据您的要求,您可以使用 popen
data =subprocess.Popen("help", stdout=subprocess.PIPE, shell=True).stdout.read().decode("utf-8")
print(data)
It will return the output for both help & systeminfo它将返回帮助和系统信息的输出
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.