如何创建特定大小的文件(比如1024字节),每行应按递增顺序排列数字或字母。文件的总大小不应超过1024个字节(即使在将字母/数字放入其中之后)。
我试过这个
def create_file_numbers(filename, size):
f=open(filename,"wb")
for x in range(size):
f.write(str(x))
f.write('\r\n')
f.close()
pass
但是这会创建一个大于1024的文件,其数字为1到1023.
我是python的初学者,所以我将不胜感激。
答案 0 :(得分:2)
数字的字符串表示形式大于数字,通常是每个字符的一个,两个或四个字节。您的\r
和\n
也会占用该空间。
max_len = max_size / bytes_per_char
s = ''
i = 0
while len(s) < max_len:
s += str(i) + '\r\n'
i += 1
if len(s) > max_len: # because it may not divide evenly
s = s[:max_len]
open(filename, "wb").write(s)
答案 1 :(得分:1)
定义您的字符串:
import string
alphabet = string.digits + string.ascii_letters
然后替换:
f.write(str(x))
使用:
f.write(alphabet[x % len(alphabet)])
例如:
>>> import string
>>> alphabet = string.digits + string.ascii_letters
>>> ' '.join(alphabet[x % len(alphabet)] for x in range(200))
'0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 a b c d'
答案 2 :(得分:1)
唯一棘手的问题是,随着数字越来越大,数字的位数越来越多。你可以通过用零填充来避免这种情况,使每一行的大小相同。例如,让我们使每行长8个字节。 <{1}}占用两个,剩下6个数字,这已经足够了。
'\r\n'
要获得没有填充的正好1024个字节,您将无法从0或1开始。具有单个数字的行占用三个字节,两个数字占用四个字节,三个数字占用五个字节。 1024/5 = 204余数4,因此您需要204行三位数字和一个两位数字。两位数字必须为99,以便下一个数字有三位数。所以这有效:
for n in range(1024/8):
f.write('%06d\r\n' % n)