cpfile.py
? 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.
Size 1.3 kB - File type text/python-sourceFile contents
#!/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
Click here to get the file