복붙노트

[PYTHON] 파이썬에서 특정 크기의 파일 만들기

PYTHON

파이썬에서 특정 크기의 파일 만들기

특정 크기의 파일 (예 : 1GiB)을 만들고 싶습니다. 내용을 채울 것이므로 내용은 중요하지 않습니다.

내가하고있는 일은 :

f = open("E:\\sample", "wb")
size = 1073741824 # bytes in 1 GiB
f.write("\0" * size)

그러나 이것은 끝내기에는 너무 오래 걸립니다. 그것은 대략 1 분을 보낸다. 이것을 개선하기 위해 무엇을 할 수 있습니까?

해결법

  1. ==============================

    1.경고이 솔루션을 사용하면 예상치 못한 결과가 발생할 수 있습니다. UPD보기 ...

    경고이 솔루션을 사용하면 예상치 못한 결과가 발생할 수 있습니다. UPD보기 ...

    1 새 파일을 만듭니다.

    2는 크기 -1 바이트를 찾습니다.

    3 쓰기 1 바이트.

    4 profit :)

    f = open('newfile',"wb")
    f.seek(1073741824-1)
    f.write(b"\0")
    f.close()
    import os
    os.stat("newfile").st_size
    
    1073741824
    

    UPD : 내 시스템에서 스파 스 파일을 찾아서 자른다 (Linux + ReiserFS). 필요에 따라 크기가 있지만 실제로 저장 장치의 공간을 소비하지 않습니다. 따라서 이것은 빠른 공간 할당을위한 적절한 해결책이 될 수 없습니다. 나는 단지 25Gib 만 가지고있는 100Gib 파일을 만들었고 아직 25Gib를 무료로 가지고있다.

    부 업데이트 : Py3 호환성을 위해 f.write ( "\ 0")에 b 접두사가 추가되었습니다.

  2. ==============================

    2.질문은 이전에 대답되었습니다. 솔루션이 크로스 플랫폼인지 여부는 확실하지 않지만 Windows (NTFS 파일 시스템)에서 완벽하게 작동합니다.

    질문은 이전에 대답되었습니다. 솔루션이 크로스 플랫폼인지 여부는 확실하지 않지만 Windows (NTFS 파일 시스템)에서 완벽하게 작동합니다.

    with open("file.to.create", "wb") as out:
        out.truncate(1024 * 1024 * 1024)
    

    이 대답은 찾기와 쓰기를 사용합니다 :

    with open("file.to.create", "wb") as out:
        out.seek((1024 * 1024 * 1024) - 1)
        out.write('\0')
    
  3. from https://stackoverflow.com/questions/8816059/create-file-of-particular-size-in-python by cc-by-sa and MIT license