我最近一直在教自己python和str.endswith一个元组作为第一个参数的例子,2.4不支持。我决定尝试在我的机器上安装更新版本的Python,这样我就更新了。这台机器是CentOs5。
作为我在机器上的用户(不是root用户),我从这里取出了包:http://www.python.org/ftp/python/2.6.7/,未压缩它,确实./configure --prefix = / home / myusername / python / compiler / Python-2.6。 7安装,然后运行make,make test(一切正常)然后最终使altinstall做好措施(我知道不应该做altinstall,因为我指定了一个前缀,但真的不想打破常规python上这台机器)。当它第一次不起作用的时候我也尝试了make altinstall作为root,但它没有任何区别。
当我尝试针对二进制文件运行脚本时,我得到了一堆像这样的乱码:
./compiler/Python-2.6.7/Lib/test/test_re.pyc : onXtd}|iti|iddddgdS(Nsu" [\u002E\u3002\uFF0E\uFF61]"sa.b.cR$RHRX(R0RÑRÚR RRY(R R7((s@/home/yspendiff/python/compiler/Python-2.6.7/Lib/test/test_re.pyttest_bug_931848as
Cstidd}|i|iid|it|itidd}|i|i id|i|i ddS(Ns\ssa bii(ii(ii(
StopIterationRºRR(R RRÓR tnextRR4t
Rº((s@/home/yspendiff/python/compiler/Python- 2.6.7/Lib/test/test_re.pyttest_bug_581080js
cCsatidd}|i|iid|i|iid|it|idS(Ns.*tasdfii(ii(ii(RRÓR RÝRR4RÞ(R
也许更有针对性的很多这样的行:
./compiler/Python-2.6.7/Lib/test/test_unicode.py : self.assert_(u'asdf' not in '')
./compiler/Python-2.6.7/Lib/test/test_unicode.py : self.assert_('asdf' not in u'')
./compiler/Python-2.6.7/Lib/test/test_unicode.py : self.assert_(u'asdf' not in u'')
./compiler/Python-2.6.7/Lib/test/test_re.py : iter = re.finditer(r".*", "asdf")
./compiler/Python-2.6.7/Lib/test/string_tests.py : self.checkequal(True, 'asdf', '__contains__', 'asdf')
./compiler/Python-2.6.7-installed/lib/python2.6/test/test_unittest.py : loader.loadTestsFromNames(['sdasfasfasdf'])
./compiler/Python-2.6.7-installed/lib/python2.6/test/test_unittest.py : self.assertEqual(str(e), "No module named sdasfasfasdf")
这只是数百个中的几个随机行。我没有搞乱任何默认选项,我有一个有趣的版本或指定了一些有趣的编译选项。我怎么把它关掉所以我可以安静地编码!
如果有人有兴趣,代码如下。我只用./Findword.py asdf:
来调用它#!/home/myusername/python/compiler/Python-2.6.7-installed/bin/python2.6
### FindWord.py
import os # for curdir() #(A)
import os.path # for join(), isfile() #(B)
import sys # for argv[], exit() #(C)
if len( sys.argv ) != 2: #(D)
print "need a word or a single-quoted phrase to search for" #(E)
sys.exit(1) #(F)
def searchInFile( pattern, dirname, filenames ): #(G)
for name in filenames: #(H)
name = os.path.join( dirname, name ) #(I)
if os.path.isfile( name ) and not name.endswith(('.pdf','.pl')): #(J)
FH = open( name, 'r' ) #(K)
for eachline in FH: #(L)
if ( eachline.find( pattern ) != -1 ): #(M)
print name, ': ', eachline #(N)
os.path.walk( os.curdir, searchInFile, sys.argv[1] ) #(O)
答案 0 :(得分:2)
正是你要求Python做的事情正是如此。你告诉它从你当前的目录中找到“asdf”这个词,它在二进制文件中找到它。