我正在尝试使用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$')
答案 0 :(得分:1)
问题在于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$')
答案 1 :(得分:-1)
您需要确保您有权添加文件。 纠正共享目录的权限后,我已经成功进行了测试。