【问题标题】:WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: '\\\\buildloc\\kernel\\*.patch/*.*'WindowsError:[错误 123] 文件名、目录名或卷标语法不正确:'\\\\buildlock\\kernel\\*.patch/*.*'
【发布时间】:2013-10-05 04:38:08
【问题描述】:

我正在尝试从内核文件夹复制 *.patch 文件并遇到以下错误

 Traceback (most recent call last):
  File "copytest.py", line 47, in <module>
    main()
  File "copytest.py", line 44, in main
    copystuff(src,dest)
  File "copytest.py", line 18, in copystuff
    shutil.copytree(src, dest)
  File "C:\CRMApps\apps\Python262\lib\shutil.py", line 140, in copytree
    names = os.listdir(src)
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: '\\\\buildloc\\kernel\\*.patch/*.*' 

代码:-

import argparse
import shutil, errno
import os
def copystuff(src, dest):
    #print "IN COPY STUFF"
    if os.path.isfile(src):
        dest_dirname = os.path.dirname(dest)
        #print "DEST DIR NAME" + dest_dirname
        if not os.path.isdir(dest_dirname):
           # print "MAKING DEST DIR"
            os.makedirs(dest_dirname)
        print src
        print dest
        shutil.copy2(src, dest)
    else:
        print src
        print dest
        shutil.copytree(src, dest)

def main ():
    copy_list=[r'\kernel\*.patch']
    #copy_list=['out\target\product\msm8226\obj\KERNEL_OBJ\vmlinux']
    parser = argparse.ArgumentParser(description='This is copy binaries for android build script)
    parser.add_argument('-v','--build_version',action='store',dest='build_version',help='<Required> Build version',required=True)
    parser.add_argument('-s','--source',action='store',dest='source',help='<Required> source path',required=True)
    parser.add_argument('-d','-destination',action='store',dest='destination',help='<Required>destination path',required=True)
    results = parser.parse_args()# collect cmd line args
    build_version = results.build_version
    print "BUILD_VERSION: " + build_version
    source = results.source
    print "SOURCE PATH: " + source
    destination = results.destination
    print "DESTINATION PATH: " + destination
    dest_fastboot=  destination + r'\out\target\product\msm8226'
    if not os.path.isdir(dest_fastboot):
        # print "MAKING DEST DIR"
        os.makedirs(dest_fastboot)
        shutil.copy2('Fastboot_load.bat', dest_fastboot)
    for item in copy_list:
        item = item.strip()
        print "ITEM: " + item
        src = source + item
        dest = destination + item
        copystuff(src,dest)

if __name__ == '__main__':
    main()

【问题讨论】:

  • 您当前的工作目录是 UNC 路径吗?这会混淆很多工具;甚至无需阅读或测试您的源代码,如果这是问题所在……您可以将其安装到驱动器号而不是解决问题吗?

标签: python


【解决方案1】:

您的问题很简单:\\buildloc\kernel\*.patch/*.* 不是目录名称。 Windows 文件名不能包含星号以及其他禁止字符。 shutil.copytree() 需要目录名;它不做 globbing。

如果您的意图是从名称以.patch 结尾的目录中复制所有文件,一种方法是使用类似glob.glob 的内容来标识您想要的目录,然后使用shutil.copytree() 复制这些目录中的每一个.另一个想法是提供一个带有copytree的回调函数来过滤掉你不想要的目录。

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2020-07-30
    相关资源
    最近更新 更多