2012-11-30 3 views
1

저는 파이썬으로 새로운데 도움이 필요합니다. 파일에서 두 개의 열을 가져와 "새 파일"로 복사하는 python 스크립트를 만들었습니다. 그러나 매번 "새 파일"에 열을 추가해야합니다. 사이드에 컬럼을 추가해야합니다. 내 스크립트가 맨 아래에 추가합니다. 누군가 CSV를 사용하도록 제안했는데 그것에 대해 읽었지만 이전 열의 측면에 새 열을 추가하는 방식으로는 만들 수 없습니다. 어떤 도움을 주셔서 감사합니다.파이썬 CSV 모듈, 하단이 아닌 측면에 열을 추가하십시오.

    :

    import sys 
    import re 
    import csv 
    
    filetoread = sys.argv[1] 
    filetowrite = sys.argv[2] 
    
    newfile = str(filetowrite) + ".txt" 
    
    openold = open(filetoread,"r") 
    
    rline = openold.readlines() 
    
    number = int(len(rline)) 
    start = 0 
    
    for i in range (len(rline)) : 
        if "2theta" in rline[i] : 
         start = i 
    
    words1 = [] 
    words2 = [] 
    
    for line in rline[start + 1 : number] : 
        words = line.split() 
        word1 = words[1] 
        word2 = words[2] 
        words1.append([word1]) 
        words2.append([word2]) 
    
    with open(newfile, 'wb') as file: 
        writer = csv.writer(file, delimiter= "\n") 
        writer.writerow(words1) 
        writer.writerow(words2) 
    

    이 입력 파일 중 일부 샘플은 다음과 같습니다 여기

    import sys 
    import re 
    
    filetoread = sys.argv[1] 
    filetowrite = sys.argv[2] 
    
    newfile = str(filetowrite) + ".txt" 
    
    openold = open(filetoread,"r") 
    opennew = open(newfile,"a") 
    
    rline = openold.readlines() 
    
    number = int(len(rline)) 
    start = 0 
    
    for i in range (len(rline)) : 
        if "2theta" in rline[i] : 
         start = i 
    
    for line in rline[start + 1 : number] : 
        words = line.split() 
        word1 = words[1] 
        word2 = words[2] 
        opennew.write (word1 + " " + word2 + "\n") 
    
    openold.close() 
    opennew.close() 
    

    사용, CSV 내가 쓴 두 번째 코드 : 여기

    내가 쓴 코드
  • https://dl.dropbox.com/u/63216126/file5.txt
  • https://dl.dropbox.com/u/63216126/file6.txt

첫 번째 스크립트는 맨 아래에 새 열을 쓰고 이전 열의 측면에 필요하다는 점을 제외하면 "거의"훌륭합니다.

답변

1

writerow을 사용하는 적절한 방법은 모두에 대한 데이터가 포함 된 단일 목록을 제공하는 것입니다.

words.append(word1) 
words.append(word2) 
writer.writerow(words) 
+0

내가 제안한 단어는 바뀌지 만 여전히 작동하지 않습니다. 필요한 것은 이미 추가하려는 새로운 쌍의 열을 이미 (출력) 파일에있는 열의 측면에 추가하는 것입니다. 나는 이것을 심각하게 잃어 버렸다. – Justme

+0

@henrymartinez, 오리지널 코드가 오해가있는 부분을 잃어 버렸던 열을 추가하려고하지 않았기 때문에. –

+0

답장을 보내 주셔서 감사합니다. 나는 파이썬으로 새롭고 내가하는 일이 맞지 않을 가능성이 높습니다. 첫 번째 코드는 많은 열을 포함하는 파일 (맨 위의 입력 파일 샘플 참조)에서 열을 가져온 다음 "새 파일"에 복사합니다. 나는 단지 같은 "새 파일"에 새로운 열 집합을 복사 할 때이 열이 아래의 열이 아닌 이전의 열 옆에 추가되기를 바랍니다. 내 코드를 작성하는 방법에 대한 제안은 매우 높이 평가됩니다. 친애하는. – Justme

관련 문제