私のコマンドは、いずれかのpythonの方法のいずれかを介してWindowsのcmdで実行する。 'ネット利用のJ:\ D \ sharedfolderは私のPCを\' どのように私は、Pythonでこの上記のコマンドを実行することができますcmdが実行されますが、python os.popenとsubprocess.call、subprocess.popenとos.systemは実行されません。なぜですか?
>>> print os.popen('net use').read()
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK M: \\Purushoth-pc\d\marriagePhotosCh
Microsoft Windows Network
OK N: \\Purushoth-pc\d\Materials
Microsoft Windows Network
The command completed successfully.
>>> print os.popen('net use J: \\Purushoth-pc\d\Materials').read()
>>> subprocess.Popen('net use J: \\Purushoth-pc\d\Materials', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
('', 'System error 67 has occurred.\r\n\r\nThe network name cannot be found.\r\n\r\n')
>>> os.system('net use J: \\Purushoth-pc\d\Materials')
2
>>> subprocess.call('net use J: \\Purushoth-pc\d\Materials /persistent:yes', shell=True)
2
>>> subprocess.check_call('net use J: \\Purushoth-pc\d\Materials /persistent:yes', shell=True)
Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
subprocess.check_call('net use J: \\Purushoth-pc\d\Materials /persistent:yes', shell=True)
File "C:\Python27\lib\subprocess.py", line 541, in check_call
raise CalledProcessError(retcode, cmd)
CalledProcessError: Command 'net use J: \Purushoth-pc\d\Materials /persistent:yes' returned non-zero exit status 2
を? 条件:任意のサードパーティ製のモジュールを使用しない - 彼らはPythonの文字列リテラルで特別な意味を持っているバックスラッシュを、含まれているため必須
この問題を整理するために私を助けてください、事前に感謝
コマンドTWICEを実行しました。最初の人は 'N:'ネットワークドライブを作成して作成しました。 'N:'が既に存在するので、第2のFAILS。 –
'N:'がまだ存在していないことを確認しましたか?それは既に存在する場合、コマンドがコード2で終了するように思えます。これは、最初の呼び出しが2を返したためです.2番目の呼び出しは例外を投げました(0以外の場合は例外です)。 3番目の呼び出しでエラーが表示されます。また、['os.popen'](https://docs.python.org/2/library/os.html#os.popen)は推奨されていません。 – xZise
@MarcB最初の呼び出しが成功したとは思わない。 ['subprocess.call()'](https://docs.python.org/2/library/subprocess.html#subprocess.call)は終了コードのみを実行し、0でなければ例外を発生させません。 – xZise