4

Python を使用して、Windows 7 マシンにあるディレクトリをバックアップします。できるだけ圧縮する必要があります。どの方法で圧縮するかはまだ決めていません。

主な問題は、ディレクトリにカスケードされた数百のファイル/ディレクトリが含まれているため、合計255文字のパス+ファイル名の後に内部が表示されないことです。このディレクトリ構造は、サードパーティ ソフトウェアによって作成されます。

簡単なテストのために、フォルダー生成(シミュレートするため)について次のように記述しました。

    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)

test フォルダー内のフォルダー数に関係なく。面白いことに、エクスプローラーを介して 9.folder の後に新しいフォルダーを参照して作成することができます。

私は wind0z にはあまり興味がないので、経験豊富なユーザーがこれを乗り越えるのを手伝ってくれれば幸いです。

非常に長いディレクトリをアーカイブするだけです。

4

1 に答える 1

3

それが主な問題である場合、substを使用することで制限を超えることができます。

これを見てください:

Pythonでユニコードする方法(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 に答える