我正在尝试使用CMD.exe中的此命令通过python(子进程模块)连接本地计算机中的另一台计算机
net use \\\\ip\C$ password /user:username
copy D:\file.txt \\ip\C$
然后在python中如下所示。但是当我尝试第二个命令时,我得到:
“ FileNotFoundError:[WinError 2]”
你遇到过同样的问题吗?有什么办法可以解决?
import subprocess as sp
code = sp.call(r'net use \\<ip>\C$ <pass> /user:<username>')
print(code)
sp.call(r'copy D:\file.txt \\<ip>\C$')
问题是这copy
是Windows中的内置命令,而不是实际命令。
这些Windows消息很糟糕,但这"FileNotFoundError: [WinError 2]"
并不意味着无法访问源文件和目标文件(如果copy
失败,您将获得带有显式文件名的普通Windows消息)。
在这里,这意味着该命令无法访问。
因此,您需要添加shell=True
到子流程调用中才能访问内置函数。
但不要这样做(安全性问题,不可移植性),shutil.copy
而要使用。
另外,使用check_call
而不是call
第一个命令,好像net use
失败了,其余的也都会失败。最好早日失败。
总结起来,这就是我要做的:
import shutil
import subprocess as sp
sp.check_call(['net','use',r'\\<ip>\C$','password','/user:<username>'])
shutil.copy(r'D:\file.txt,r'\\<ip>\C$')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句