下午好,
我使用此方法的一个版本来映射十几个驱动器号:
# Drive letter: M
# Shared drive path: \\shared\folder
# Username: user123
# Password: password
import subprocess
# Disconnect anything on M
subprocess.call(r'net use * /del', shell=True)
# Connect to shared drive, use drive letter M
subprocess.call(r'net use m: \\shared\folder /user:user123 password', shell=True)
只要我没有包含程序正在使用的文件的文件夹,上面的代码就会很好用。
如果我在cmd窗口中运行相同的命令并且当我尝试断开驱动器时正在使用文件,则返回您确定吗? Y / N
如何通过Py脚本将此问题传回给用户(或者如果没有别的,请强行断开连接,以便代码可以继续运行?
答案 0 :(得分:0)
要强行断开连接,请尝试/yes
,如此
subprocess.call(r'net use * /del /yes', shell=True)
为了重定向'向用户提出的问题(至少)有两种可能的方法:
第一种方法非常脆弱,因为您必须阅读标准输出并解释它特定于您当前的语言环境,以及稍后回答特定于您当前语言环境的问题(例如,确认将使用& #39; Y'用英语,但用J'用德语等。)
第二种方法更稳定,因为它依赖于或多或少的静态返回码。我做了一个快速测试,如果取消问题,返回代码为2;如果成功当然只有0.因此,使用以下代码,您应该能够处理问题并根据用户输入采取行动:
import subprocess
exitcode = subprocess.call(r'net use * /del /no', shell=True)
if exitcode == 2:
choice = input("Probably something bad happens ... still continue? (Y/N)")
if choice == "Y":
subprocess.call(r'net use * /del /yes', shell=True)
else:
print("Cancelled")
else:
print("Worked on first try")