# join files interactively
import os
def menu():
print("welcome to file joiner")
print()
print("you will need to specify the original file name")
filename =input("Enter the original name:")
return filename
def main():
try:
filename = menu()
metaFile = filename + ".meta"
infile = open(metaFile, "r")
metaInfo = infile.readlines()
splitsFilePrefix = metaInfo[0] + strip()
bufferSize = metaInfo[1].strip()
bufferSize = int(bufferSize)
splits = metaInfo[2] + strip()
splits = int(splits)
try:
os.remove("new" + filename)
except:
pass
outfile = open("new" + filename, "ab")
infile = open(splitsFilePrefix + str(0), "rb")
buffer = infile.read(bufferSize)
i = 0
while len(buffer):
outfile.write(buffer)
print(".", end="")
i = i+1
if i == splits:
break
splitsFilePrefix = metaInfo[0].strip()
splitsFilePrefix = splitsFilePrefix + str(i)
infile = open(splitsFilePrefix,"rb")
buffer = infile.read(bufferSize)
infile.close()
outfile.close()
print()
print("Files rejoined, File name is :new" + filename)
except:
print("An error Occured")
main()
Tags:
你还没说出什么问题。如果我们不知道它应该做什么,没有人能帮助它按照它应该做的方式工作
我浏览了一遍,寻找语法错误,没有看到任何错误
我看到了
+ str(0)
,想知道它是否只打开了第一个文件。结果它没有,它也打开了其他文件我看到了
splitsFilePrefix = splitsFilePrefix + str(i)
,并认为它可能会生成文件名xyz1
,xyz12
,xyz123
,但不是每次都通过重新读取元文件来处理的我看到了大的
try: {everything} except: {error}
代码,它将捕获每一条可能有用的错误消息,并将其替换为一条无用的错误消息。那没用我确定该计划的目的是:
我看到了:
并认为这可能是一个由一个错误,打破之前阅读最后一段。不,它计算的是0,1,2,而不是1,2,3,所以应该可以
我目前的猜测是:
在第一个文件的末尾,它将不读取任何内容,缓冲区将为空,循环将停止,并且不会继续处理任何剩余的文件
这是因为您不能重复读取一个文件,并在同一个循环中逐步遍历所有文件
重新设计如下:
所有这些都未经测试,除了一些验证缓冲区的快速测试,所以ymmv
相关问题 更多 >
编程相关推荐