注册 登录
编程论坛 Python论坛

写一个python脚本,要求支持从文本文件里面随机抽取若干行,写入新的文本文件里面。

huntkey2012 发布于 2012-06-12 16:09, 2407 次点击
mport  random, sys
# 没有考虑到字符集,如果是汉字,这个是否能正常运行?
f= open("test.txt", "r")
# 输入输出文件写死
cont = f.read()
lcont = cont.split("\n")
fout = open("human.txt", "w")
for i in range(0, 10):
    inx= random.randint(0, len(lcont))
    fout.write("%s\n" %(lcont[inx]))
f.close()
fout.close

# 变量命名不规范,代码里有魔鬼数字
# 功能没有实现完全,没有能让用户定义抽取的条数
# 防错代码没有,如果输入一个不存在的文件,那这个程序就崩溃了。
# 代码没有注释,没有写成函数,通用性不高

请高手优化 特此感谢
1 回复
#2
nm_00112012-07-06 09:25
#encoding=utf-8
import random
from sets import Set
   
def copyfile(srcfile, dstfile, linenum):
     """
         get linenum different lines out from srcfile at random
         and write them into dstfile
     """
     result = []
     ret = False
     try:
         srcfd = open(srcfile,'r')
     except IOError:
         print 'srcfile doesnot exist!'
         return ret
     try:
         dstfd = open(dstfile,'w')
     except IOError:
         print 'dstfile doesnot exist!'
         return ret
     srclines = srcfd.readlines()
     srclen = len(srclines)
     while len(Set(result)) < int(linenum):
         s = random.randint(0,srclen-1)
         result.append(srclines[s])
     for content in Set(result):
         dstfd.write(content)
     srcfd.close()
     dstfd.close()
     ret = True
     return ret
  
if __name__ == "__main__":
     srcpath = raw_input('input srcfile path')
     dstpath = raw_input('input dstfile path')
     linenum = raw_input('input linenum')
     print copyfile(srcpath,dstpath,linenum)
     

            
      
1