利用Python文件操作输出文本

1. 要求写一个程序输出指定路径下的所有java文件到一个文本文件中,用java写稍显复杂,于是试了下用python来写,代码如下:

 

 

#-*- coding:utf-8 -*-
import os

for parent,dirnames,filenames in os.walk('/home/xxxx/src'):   #遍历src下的文件
    for filename in filenames:   #循环文件列表
       if ".java" in filename:       #找出所以后缀是.java的文件
           javafile = open(os.path.join(parent,filename))   #得到该文件的绝对路径并打开文件
           for line in javafile.readlines():     #读取文件每一行,并循环
               if 'package' in line:    #行中有‘package’字样 则不输出
                   print 'Not write package'
               elif 'import' in line:    #行中有‘import’字样 则不输出
                   print 'Not write import'
               else:
                   open('myGrep.txt','a').write(line)   #将该行写入指定名称为'myGrep.txt'的文件中去
 

 

效果还不错,比用java写快捷多了。

 

参考: http://www.jb51.net/article/15459.htm

 

        http://www.phpfans.net/article/htmls/201004/Mjg0MDAy.html

 

 

2. 另外附上一个遍历文件夹下所有文件夹包括文件的方法:

 

 

#-*- coding:utf-8 -*-
#本功能借助了chardet包来实现探测字符集,并转换成utf-8的编码格式打印输出dir,file到文件
import os,chardet 

#转码函数,解决了中文显示成了ascii的问题
def _smartcode(stream):
     """smart recove stream into UTF-8
     """
     ustring=stream
     codedetect=chardet.detect(ustring)["encoding"]
     print codedetect
     try:
         print ustring
         ustring=unicode(ustring,codedetect)
         print ustring
         return "%s %s"%("",ustring.encode('utf8'))
     except:
         return u"bad unicode encode try!"



#主函数,遍历文件夹并输出文件夹和文件的路径信息保存到指定的文本中
for root,dirs,files in os.walk('/home/neptune/Dropbox'):
 #print root,dirs,files
 #open('mycd.cdc','a').write("%s %s %s" % (root,dirs,files))
 export="\n"+root+"\n"
 for d in dirs:
    export+="-d "+root+_smartcode(d)+"\n"
 for f in files:
    export+="-f %s %s \n" % (root,_smartcode(f))
 export+= "="*70

 open('mycd.cdc','a').write(export)
 

p.s. chardet包需要下载安装。地址是:http://chardet.feedparser.org/download/

p.p.s 在Python中,如果要显示中文字符,简单做法是把字符串先转化为unicode,然后在有unicode对象转化成任意其他系统可显示的编码。

你可能感兴趣的:(html,.net,python,OS,F#)