cpfile.py
Tilbage
Hent filen
Licens GPL
? Jeg sidder og prøver at lave et program som kan kopiere filer, men mens jeg
sidder og afprøver det finder jeg ud af at programmet ikke kan kopiere filer
over 1 mb eller i hvert fald der omkring. Jeg forstår ikke hvorfor da jeg jo
har sat bufferen til næsten 2mb.
Svar 1. kopier med lille buffer eller 2. brug operativsystemets egen cp cmd.
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
"""
USAGE: cpfile.py <source> <dest>
"""
# ? Jeg sidder og prøver at lave et program som kan kopiere filer, men mens jeg
# sidder og afprøver det finder jeg ud af at programmet ikke kan kopiere filer
# over 1 mb eller i hvert fald der omkring. Jeg forstår ikke hvorfor da jeg jo
# har sat bufferen til næsten 2mb.
# Svar 1. kopier med lille buffer eller 2. brug operativsystemets egen cp cmd.
def os_cp(src, dest):
import os
os.system("cp %(src)s %(dest)s" % vars())
def cp(kilde, maal, buf_size=1024):
"""Kopierer kilde til maal
Der bruges en buffer på buf_size bytes så kopieringen er økonomisk hvad angår ram.
"""
k = open(kilde, "rb")
m = open(maal, "w")
buf = k.read(buf_size)
while buf:
m.write(buf)
buf = k.read(buf_size)
if __name__=="__main__":
import sys
import datetime
import time
try:
kilde = sys.argv[1]
maal = sys.argv[2]
except IndexError, e:
sys.stderr.write( "Wrong arguments?\n")
sys.stderr.write(__doc__)
sys.exit(1)
start = datetime.datetime.now()
cp(kilde, maal, buf_size=1000)
print "Elapsed", datetime.datetime.now() - start
start = datetime.datetime.now()
os_cp(kilde, maal)
print "Elapsed", datetime.datetime.now() - start