2012-10-13 60 views
0

問:我有一些問題,我的老段子不Python的3.x的學習Python中,其他項目腳本

Offtopic工作;嘗試訪問用於批量重命名的二進制和文本文件時,Python有多靈活?在碰撞和IMG檔案?

因爲我已經走了使用3dsmax的關卡設計的方向,所以我對此不再有最好的理解。

反正..

錯誤:

Traceback (most recent call last): 
    File "C:\SOL_REM.py", line 26, in <module> 
    process_ide(sys.argv[1], int(sys.argv[2]), 
    File "C:\SOL_REM.py", line 18, in process_ide 
    ide_line = reduce(lambda x,y: str(x)+","+st 
NameError: global name 'reduce' is not defined 

代碼:

import sys 

if len(sys.argv) < 4: 
    sys.exit('Usage: Source ide | ID number | Dest ide filename.' sys.argv[0]) 

def process_ide(ide_source, num, ide_destination): 
    src = open(ide_source,'r') 
    dst = open(ide_destination,'w') 

    for line in src: 
     ide_line = line 

     if not (line == "" or line[0]=="#" or len(line.split(",")) < 2): 
      ide_line = line.split(",") 
      ide_line[-1] = ide_line[-1][:-2] 
      ide_line[0] = num 
      num+=1 
      ide_line = reduce(lambda x,y: str(x)+","+str(y), ide_line)+"\n" 

     dst.write(ide_line) 

    src.close() 
    dst.close() 


process_ide(sys.argv[1], int(sys.argv[2]), sys.argv[3]) 

起步簡單:

我想要做的是通過枚舉順序更改數字來解析ide文本文件。

語法將SOL_rem.py game.ide 1845 game2.ide

示例文件:

ID Modelname  TexName  Rendering flags. 

objs 
1700, ap_booth2_03, ap_airstuff1, 1, 190, 0 
1701, ap_seaplaland1, ap_seasplane, 1, 299, 0 
1702, ap_seaplanehanger1, ap_seasplane, 1, 299, 0 
1703, ap_termwindows1, ap_termwindows, 1, 299, 4 
1704, ap_blastdef_01, ap_newprops1opac, 1, 299, 4 
1705, ap_blastdef_03, ap_newprops1opac, 1, 299, 4 
1706, air_brway_030, airgrndb, 1, 299, 0 
end 

這些ID將被重新調整從1845按升序排列。

+2

這是什麼版本的Python?這個錯誤與Python的「靈活」有什麼關係? –

+0

如果你使用Python自帶的工具(比如說,['csv'模塊](http://docs.python.org/library/csv.html)),它就更加靈活了。 –

回答

0

在Python3,你可以做

from functools import reduce 

甚至在python2.6的+上面的應該是好的,但不是必需的。

是的。無論你想做什麼,Python都是完全靈活的。像重寫buildin也一樣。

+0

哦,沒有注意到。他正在使用Python3。 –

+0

謝謝,試試這個沒有成功。 –

+0

2.6腳本工作正常,我可以做得更好,比如只需輸入所需ID的編號和一個文件請求者來選擇源文件和目標文件。 –

2

reduce不再使用reduce在Python 3

而不是內置的命名空間,爲什麼不直接使用join

ide_line = ','.join(ide_line) + '\n' 
+0

文件「C:\ SOL_REM.py」,第27行 process_ide(sys.argv [1],int(sys.argv [2]),sys.argv [3])sys - 這是從functools import減少 –

+0

爲什麼你不把這個回溯添加到你的問題? – nneonneo