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

时间:2016-09-09 23:25:15

标签: python windows batch-file command-line cmd

所以我在我编写的Python程序中加入了一些值(它的作用是无关紧要的):

  

E:\用户\我\桌面\的Python> idtohex.py

     

输入ID:213467

     

DB 41 03

很好,它可以正常工作。现在,此时我不小心将此字​​符串复制到我的剪贴板:

  

[此处为新线]

     

E:\用户\我\桌面\的Python> idtohex.py

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

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

  

ValueError:基数为10的int()的无效文字:''

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

  

E:\用户\我\桌面\的Python> idtohex.py

命令提示符给了我这个错误,所以我认为这不是什么大问题,只是继续使用它:

  

'E:\ Users \ Me \ Desktop \ Python'无法识别为内部或外部命令,

     

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

现在我尝试再次运行该程序,我的整个程序完全是空的。 Overwritten. 0-bytes on disk。因此,由于这个简单的错误,我以某种方式覆盖了我的整个程序,无法将其取回。

地狱 如何在Windows命令提示符下发生这种情况?

1 个答案:

答案 0 :(得分:5)

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