Python Snippet(一)

10597 ワード

//Linuxホストに注意
//指定ディレクトリのファイル名を削除します.tmpが接尾辞のファイル
 1 #!/usr/bin/python
 2 import os , glob
 3 dirname  =  '/tmp'
 4 allpy  =  glob.glob(os.path.join(dirname,'*'))
 5 for filename in allpy:
 6     filesize  =  os.path.getsize(filename)
 7     if(filename.endswith('tmp')):
 8         try:
 9             os.remove(filename)
10         except:
11             continue

//指定したフォルダ(サブフォルダ含む)の中で最大2つのファイルを出力する
 1 #!/usr/bin/python
 2 import os
 3 dirname = '/tmp'
 4 allsize = []
 5 for (root,dirs,files) in os.walk(dirname):
 6     for filename in files:
 7         fullname  =  os.path.join(root,filename)
 8         filesize  =  os.path.getsize(fullname)
 9         allsize.append((filesize,fullname))
10 allsize.sort()
11 print allsize[-2:]

//指定したファイル(サブフォルダを含む)のすべてのファイルとフォルダを削除する
 
1 import os
2 for root, dirs, files in os.walk(top, topdown=False):
3     for name in files:
4         os.remove(os.path.join(root, name))
5     for name in dirs:
6         os.rmdir(os.path.join(root, name))

//指定したファイルのファイルシーケンスを削除する
 1 #!/usr/bin/python
 2 import os
 3 sequence       =  raw_input('Sequence:')
 4 sequence_start =  int(raw_input('Start_Frame:'))
 5 sequence_end   =  int(raw_input('End_Frame:'))
 6 #remove the whitespace before or after the  'sequence'
 7 sequence       =  sequence.strip()
 8 lst            =  sequence.split('/')
 9 sequence_path  =  sequence[:-len(lst[-1])]
10 sequence_name  =  lst[-1]
11 filename_lst       =  sequence_name.split('#')
12 padding        =  len(filename_lst[1:-1])+1
13 for index in range(sequence_start,sequence_end+1,1):
14     file_path = sequence_path + filename_lst[0] + (padding-len(str(index)))*'0' + str(index) + filename_lst[-1]
15     os.remove(file_path)
16       

実行後にそれぞれ入力:
/srv/scratch/houdini_zpeng/Render/ship/shipA####.tif
101
300
シーケンスファイルshipA####.tif 101-300フレームから削除
//ファイルの絶対パスを見つける
1 >>> os.path.abspath('memo.txt')
2 '/Users/csev/memo.txt'

//ファイルやフォルダがあるかどうかを判断する
1 >>> os.path.isdir('memo.txt')
2 False
3 >>> os.path.isdir('music')
4 True

//指定されたディレクトリアドレスのフォルダとファイルのリストを返します.
1 >>> os.listdir(cwd)
2 ['music', 'photos', 'memo.txt']

//取得フォルダ(サブフォルダ含む)におけるtxtファイルの数
1 import os
2 count = 0
3 for (dirname, dirs, files) in os.walk('.'):
4     for filename in files:
5         if filename.endswith('.txt') :
6             count = count + 1
7 print 'Files:', count

OUTPUT:
python txtcount.py
Files: 1917

 os.walkはすべてのフォルダとサブフォルダに再帰的に入ります'.'文字は現在のフォルダを表します.//コマンドラインからパラメータを読み込む
1 import sys
2 print 'Count:', len(sys.argv)
3 print 'Type:', type(sys.argv)
4 for arg in sys.argv:
5     print 'Argument:', arg

sys.argvコンテンツは文字列タイプのリストで、リストの1つ目はプログラムの名前で、残りはcommand lineでプログラムの名前の後ろのパラメータです
 
//プログラムargtest command lineから複数のパラメータを受け入れる
1 python argtest.py hello there

OUTPUT:
Count: 3
Type: <type 'list'>
Argument: argtest.py
Argument: hello
Argument: there

//sys.argvのもう一つの例
1 import sys
2 name = sys.argv[1]
3 handle = open(name, 'r')
4 text = handle.read()
5 print name, 'is', len(text), 'bytes'

OUTPUT:
1 python argfile.py mbox-short.txt
2 mbox-short.txt is 94626 bytes

 
 
//PIPE  
//Shellから起動したプログラムは、Pythonの「Pipe」で起動できます.A pipe is an object that represents a running process.//os popenでls:upperCaseListを起動します.
1 >>> cmd = 'ls -l'
2 >>> fp = os.popen(cmd)

os.popenのパラメータは、open fileのようなfile pointerを返すコマンドを含む文字列です.readline(1行ずつ読む)またはread(一気に全部読む)を使用してls-lプロセスの実行結果を読み取ることができます.
>>> res = fp.read()

//操作が完了したらfileのように閉じてpipeを閉じることができます
>>> stat = fp.close()
>>> print stat
None
fp.close()  ls   (process)     ,None        (    )

 
//ウェブページをキャプチャし、素拠を分析し、その基本的なデータ形式は以下の通りである.
<tr><td>Modu</td><td><span class="comments">90</span></td></tr>
<tr><td>Kenzie</td><td><span class="comments">88</span></td></tr>
<tr><td>Hubert</td><td><span class="comments">87</span></td></tr>

//spanタグの数字をつかみ、個数と総和を計算する
 1 import urllib
 2 from BeautifulSoup import *
 3 url  = raw_input("Enter -")
 4 html = urllib.urlopen(url).read()
 5 soup = BeautifulSoup(html)
 6 sum = 0
 7 count = 0
 8 spans = soup("span")
 9 for span in spans:
10     value = span.contents[0]  //        ,       span.attrs,
                   // span.get('class', None), , None
11 if value: 12 count +=1 13 sum +=int(value) 14 print("Count %s" % count) 15 print("Sum %s" % sum)

//URLを入力:http://python-data.dr-chuck.net/comments_217954.html、次のデータが得られます.
Enter - http://python-data.dr-chuck.net/comments_217954.html 
Count 50
Sum 2591

 //newList = [do something for variable in old list if condition]
1 mixedList = [1, 2, 3, 'a', 'b', 'c']
2 upperCaseList = [item.upper() for item in mixedList if isinstance(item, str)]
3 upperCaseList