4

我将使用 Python 备份位于 Windows 7 机器中的目录。我需要尽可能地压缩它。我还没有决定采用哪种压缩方式。

主要问题是目录包含数百个级联文件/目录,因此在路径+文件名的总共 255 个字符之后我看不到里面。此目录结构由第 3 方软件创建。

只是为了快速测试,我为文件夹生成(模拟)编写了以下内容;

    start = time.time()
    end = time.time() - start
    root_dir = 'C:\test'
    os.chdir("C:\test")
    iterate = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    while (end<1):                
            end = time.time() - start   
            os.system("mkdir " + str(iterate))
            os.chdir(root_dir + "\\" + str(iterate))
            root_dir = os.getcwd() 

结果在这个;

    The filename or extension is too long.
    Traceback (most recent call last):
      File "folder_generate.py", line 21, in <module>
        os.chdir(root_dir + "\\" + str(iterate))
    WindowsError: [Error 2] The system cannot find the file specified: 'c:\\Python27
    \\ABCDEFGHIJKLMNOPQRSTUVWXYZ\\ABCDEFGHIJKLMNOPQRSTUVWXYZ\\ABCDEFGHIJKLMNOPQRSTUV
    WXYZ\\ABCDEFGHIJKLMNOPQRSTUVWXYZ\\ABCDEFGHIJKLMNOPQRSTUVWXYZ\\ABCDEFGHIJKLMNOPQR
    STUVWXYZ\\ABCDEFGHIJKLMNOPQRSTUVWXYZ\\ABCDEFGHIJKLMNOPQRSTUVWXYZ\\ABCDEFGHIJKLMN
    OPQRSTUVWXYZ'

正如在另一个问题中指出的那样,但没有明确回答。

我有一个快速测试代码,用于浏览目录内容;

    fileList = []
    fileSize = 0
    folderCount = 0
    rootdir = "c:\\test"

    for root, subFolders, files in os.walk(rootdir):
        folderCount += len(subFolders)
        for file in files:
            f = os.path.join(root,file)
            fileSize = fileSize + os.path.getsize(f)
            fileList.append(f)

    print("Total Size is {0} bytes".format(fileSize))
    print("Total Files ", len(fileList))
    print("Total Folders", folderCount)  

结果是 ;

     Total Size is 0 bytes
     ('Total Files ', 0)
     ('Total Folders', 9)

无论测试文件夹中有多少个文件夹。有趣的是我可以通过资源管理器无缝浏览和创建 9.folder 之后的新文件夹。

我不太喜欢wind0z,因此如果有经验的用户能帮助我克服这个问题,我将不胜感激。

只需归档一个很长的目录。

4

1 回答 1

3

如果这是主要问题,则可以通过使用subst来超越限制。

看看这个:

如何在 Python 中进行 unicode(它谈到 255 个限制) - http://docs.python.org/release/3.1.5/howto/unicode.html

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx - 注意 Unicode 部分......它解释了 Windows API 的 Unicode 版本有更高的限制 - 以及如何启用它.

看看这个: http ://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/subst.mspx?mfr=true

看看这个讨论 - http://forums.v3.co.uk/showthread.php?t=223343

除此之外,如果工作是你必须完成的事情,而这不是为了你自己纯粹的学习和娱乐,我可以告诉你,有更好的解决方案来备份你需要的东西,而不是你从头开始创建自己的东西.

于 2012-06-08T22:58:27.583 回答