2016-10-18 4 views
0

스크립트를 사용하여 .NET 프로젝트의 각 AssemblyVersion.cs 파일의 버전을 업데이트합니다. 그것은 항상 완벽하게 작동했지만, PC 포맷 이후로, 편집 된 각 .cs 파일의 시작 부분에 유니 코드 문자가 추가됩니다. io 대신 codecs을 사용하는, here을 쓴 아무것도 변경되지로,Python은 파일 시작 부분에 유니 코드 문자를 추가합니다.

with open(fname, "r") as f: 
    out_fname = fname + ".tmp" 
    out = codecs.open(out_fname, "w", encoding='utf-8') 
    textInFile="" 
    for line in f: 
     textInFile += (re.sub(pat, s_after,line)) 
    out.write(u'\uFEFF') 
    out.write(textInFile) 
    out.close() 
os.remove(fname) 
os.rename(out_fname, fname) 

나는 또한 시도했다 :이처럼 :

using System.Reflection; 
using System.Runtime.InteropServices; 
using System.Security; 

나는 파일을 열려면이 코드를 사용합니다.

다른 팀원의 PC에서는 동일한 구성 (Win10 및 IronPython 2.7)으로 작동합니다.

이 문제를 해결하려면 어떻게해야합니까? 어디에서 문제를 찾을 수 있습니까?

감사

답변

0

각 파일의 시작 부분에 UT8 BOM 마커를 추가하는 동안 파일 시스템에서 파일이 ISO-8859-1 인코딩을 사용하는 것으로 보인다.

코드 작업이 끝나면 처음에는 UTF-8 BOM + ISO-8859-1 메타 파일이 생성됩니다.

내가 설명한 시나리오가 유효한지 확인하기 위해 메모장 ++ 또는 다른 편집기로 수정하기 전에 입력 파일의 인코딩을 검사합니다. 그렇다면 메타 데이터를 피하기 위해 다른 인코딩을 사용하여 입력 파일을 읽어야합니다.

with open(fname, "r", "ISO-8859-1") as f: 
    ... 
+0

죄송합니다. 그러나 처리 된 파일의 인코딩은 UTF-8 BOM입니다. 특히이 파일은 .NET 프로젝트의 AssemblyInfo.cs입니다. 나는 또한 "ISO-8859-1"을 읽기와 쓰기 방법으로 추가하려고 시도했지만 작동하지 않습니다. – Krusty

+0

처리중인 파일이 UTF-8 BOM 인 경우 일반 'utf-8'이 아닌 'utf-8-sig'인코딩을 사용해야합니다. BOM 표식이 수동으로 작성한 BOM이있는 파일의 시작 부분에 추가되고 추가되는 일반 UTF-8 파일과 같이 읽으므로 문제 일 수 있습니다. – n3m4nja

+0

이 방법으로 시도했지만 여전히 작동하지 않습니다. f : out_fname = fname + ".tmp"'codecs.open (fname, "r") with out = codecs.open (out_fname, " w ", 인코딩 = 'utf-8-sig') ' 다른 제안 사항이 있으십니까? – Krusty

관련 문제