Subprocess.call() 来自外部驱动器
Subprocess.call() from external drive
我正在尝试 运行 一个 Python 外部驱动器的脚本。脚本 运行 没问题,但是当它到达行 subprocess.call(callThis, shell=True)
时,我收到错误(来自命令提示符)the filename, directory name, or volume label syntax is incorrect
。当我 运行 从 C 驱动器中删除相同的脚本时,它可以正常工作并复制文件。 Python安装在C盘,外接盘有关系的话就是microSD卡。 Python 版本是 3.4,但它也需要在 Python 2.7 上工作。
相关代码:
paths = [os.path.join(dirpath, fname) for dirpath, __, fnames in os.walk('.\MUSIC') for fname in fnames]
for path in paths:
pathcomp = path.replace('.\MUSIC', 'C:\redacted\Music\MUSIC')
if not os.path.isfile(pathcomp):
abspath = os.path.abspath(path)
callThis = 'copy "'+abspath+'" "'+os.path.dirname(pathcomp)+'"'
print(callThis)
subprocess.call([callThis], shell=True)
打印callThis
输出类似于
的内容
copy "G:\MUSIC\dir1\dir2\fname.mp3" "C:\redacted\Music\MUSIC\dir1\dir2\fname.mp3"
在命令提示符中键入该行可以正常工作并复制文件。
我认为问题与命令提示符有关 运行宁出 C 驱动器而不是外部驱动器。我怎样才能从外部驱动器中取出 运行(在 python 脚本中显示 G:/>
而不是 C:\
?我试过`subprocess.call('G:', shell=True) 但有同样的问题。
将列表传递给 subprocess.call
会覆盖 shell 标记化规则。您应该将字符串传递给 call
函数。
subprocess.call(callThis,shell=True)
我正在尝试 运行 一个 Python 外部驱动器的脚本。脚本 运行 没问题,但是当它到达行 subprocess.call(callThis, shell=True)
时,我收到错误(来自命令提示符)the filename, directory name, or volume label syntax is incorrect
。当我 运行 从 C 驱动器中删除相同的脚本时,它可以正常工作并复制文件。 Python安装在C盘,外接盘有关系的话就是microSD卡。 Python 版本是 3.4,但它也需要在 Python 2.7 上工作。
相关代码:
paths = [os.path.join(dirpath, fname) for dirpath, __, fnames in os.walk('.\MUSIC') for fname in fnames]
for path in paths:
pathcomp = path.replace('.\MUSIC', 'C:\redacted\Music\MUSIC')
if not os.path.isfile(pathcomp):
abspath = os.path.abspath(path)
callThis = 'copy "'+abspath+'" "'+os.path.dirname(pathcomp)+'"'
print(callThis)
subprocess.call([callThis], shell=True)
打印callThis
输出类似于
copy "G:\MUSIC\dir1\dir2\fname.mp3" "C:\redacted\Music\MUSIC\dir1\dir2\fname.mp3"
在命令提示符中键入该行可以正常工作并复制文件。
我认为问题与命令提示符有关 运行宁出 C 驱动器而不是外部驱动器。我怎样才能从外部驱动器中取出 运行(在 python 脚本中显示 G:/>
而不是 C:\
?我试过`subprocess.call('G:', shell=True) 但有同样的问题。
将列表传递给 subprocess.call
会覆盖 shell 标记化规则。您应该将字符串传递给 call
函数。
subprocess.call(callThis,shell=True)