标题:写一个python脚本,要求支持从文本文件里面随机抽取若干行,写入新的文本文 ...
只看楼主
huntkey2012
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-6-12
 问题点数:0 回复次数:1 
写一个python脚本,要求支持从文本文件里面随机抽取若干行,写入新的文本文件里面。
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

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

请高手优化 特此感谢
搜索更多相关主题的帖子: 汉字 python 文本文件 要求 
2012-06-12 16:09
nm_0011
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-7-5
得分:0 
#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)
     

            
      
2012-07-06 09:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-371391-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.374473 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved