我是如何用这个命令提示符命令覆盖整个python程序的?

我是如何用这个命令提示符命令覆盖整个python程序的?,python,windows,batch-file,command-line,cmd,Python,Windows,Batch File,Command Line,Cmd,因此,我在我编写的Python程序中输入了一些值(它所做的与此无关): E:\Users\Me\Desktop\Python>idtohex.py 输入ID:213467 DB 41 03 很好,很好用。此时,我意外地将此字符串复制到剪贴板: [这里是新行] E:\Users\Me\Desktop\Python>idtohex.py 从我最初在命令提示符下启动程序时开始 现在,由于换行符,我的程序崩溃了,因为它无法处理输入(oops): ValueError:基数为10的int()的文本无效:“

因此,我在我编写的Python程序中输入了一些值(它所做的与此无关):

E:\Users\Me\Desktop\Python>idtohex.py

输入ID:213467

DB 41 03

很好,很好用。此时,我意外地将此字符串复制到剪贴板:

[这里是新行]

E:\Users\Me\Desktop\Python>idtohex.py

从我最初在命令提示符下启动程序时开始

现在,由于换行符,我的程序崩溃了,因为它无法处理输入(oops):

ValueError:基数为10的int()的文本无效:“”

由于此错误,我现在返回到命令提示符,并输入剪贴板中的下一行,该行正在尝试运行此命令:

E:\Users\Me\Desktop\Python>idtohex.py

命令提示符给了我这个错误,所以我认为这没什么大不了的,还是继续吧:

“E:\Users\Me\Desktop\Python”未被识别为内部或外部命令

可操作的程序或批处理文件

现在我尝试再次运行程序,但我的整个程序都是空的。因此,由于这个简单的错误,我不知何故过度编写了我的整个程序,无法将其恢复


在Windows命令提示符下,这是如何发生的?

在运行命令之前,cmd.exe为子进程设置标准句柄以进行继承。
操作符将文件描述符重定向到为输出而打开的文件,并将现有文件截断为0字节。它默认为文件描述符1(标准输出或标准输出)。由于唯一的输出是文件描述符2上的错误消息(标准错误,stderr),因此生成的文件是空的。如果您运行了
E:\Users\Me\Desktop\Python 2>idtohex.py
(在这种情况下,解析需要空间),文件将被错误消息覆盖。

这一行:
E:\Users\Me\Desktop\Python>idtohex.py
的意思是“按照给定路径执行程序,并将其输出存储到idtohex.py文件中”,与往常一样。如果该命令不存在,则其输出为空,因此存储在.py文件中的结果为0字节…您应该使用IDE而不是传统的命令提示符进行研究。是否确实在命令提示符下输入了所有
E:\Users\Me\Desktop\Python>idtohex.py
?您是否不知道
E:\Users\Me\Desktop\Python>
表示提示符本身-您应该在打开终端时看到它-您只需要输入
idtohex.py
?@HarryJohnston,cmd.exe当然是一个遗留shell(它可以追溯到OS/2,并且基于MS-DOS COMMAND.COM),但是,对于powershell.exe(也是一个控制台应用程序,即conhost.exe的客户端),您不能这么说。对于3.6b1(9月12日),CPython正在改造Windows控制台的原始I/O层,以支持使用宽字符API的Unicode(原始层在UTF-16和UTF-8之间进行代码转换,因为将字节作为UTF-8使用更适合Python)。因此,控制台脚本和python.exe REPL将不再局限于遗留代码页。耶?