2013-03-31 3 views
0

내가 재 게시하지 않기를 바란다. (나는 직접 연구했다.) 약간의 도움이 필요하다.텍스트 파일의 특정 줄에 쓰는 방법

그래서 최대한 문제를 설명하겠습니다. 내가 가진

텍스트 파일이며, 그 안에 내가이 형식의 정보가 있습니다

a 10 
b 11 
c 12 

내가이 파일을 읽고 키와 첫 번째 열이있는 사전으로 변환하고 두 번째 가치.

이제 반대의 작업을 시도하고 있습니다. 동일한 형식으로 수정 된 값을 가진 파일을 다시 쓸 수 있어야합니다. 키는 공백으로 구분 된 다음 해당 값으로 구분됩니다.

왜 이렇게하고 싶습니까?

글쎄, 모든 값은 프로그램을 사용하는 사용자가 변경할 수 있다고 가정합니다. 따라서 값을 변경하기로 결정할 때 텍스트 파일에 다시 기록해야합니다.

이것은 문제가있는 곳이며, 어떻게 해야할지 잘 모릅니다.

어떻게해야합니까? 이 같은

T_Dictionary = {} 
    with open(r"C:\NetSendClient\files\nsed.txt",newline = "") as f: 
     reader = csv.reader(f, delimiter=" ") 
     T_Dictionary = dict(reader) 
+0

도움 희망 새 파일을 만들려면 http://stackoverflow.com/questions/4719438/editing-specific-line-in-text-file-in-python –

+0

데이터 지속성을 위해 이러한 파일/사전 변환을 수행하는 경우 JSON, 피클, O 사용 고려 r은 sqlite3와 같은 DB입니다. – Jared

답변

0

확인 M은 사전을 상정하는 것은라고하고 파일 내가 그렇게 할 것 text.txt입니다 : 내가 이해 여부를 묻는 있었는지

W="" 

for i in A: # for each key in the dictionary 
    W+="{0} {1}\n".format(i,A[i])  # Append to W a dictionary key , a space , the value corresponding to that key and start a new line 

with open("text.txt","w") as O: 
    O.write(W) 

.
그러나 파일의 끝 부분에 빈 줄을 떠날 것이다이 방법을 사용하지만, 그

O.write(W[0:-1]) 

O.write(W) 

를 교체 제거 할 수 있습니다 내가 가장 좋은 방법은이

+0

1. 왜'tuple (A.key())'를 사용해야 하는지를 간단하게 반복 할 수 있습니다 : for i in A'. 2.'str()'대신에''{0} {1} \ n ".format (i, A [i])'문자열 형식을 사용하십시오. 3. 파일을 열 때 항상'with' 문을 사용하십시오. –

+0

코드가 잘못되었습니다. –

+0

'O.close()', 그것은 with 문을 사용하는 요점입니다. 또한 for 문 안에 for 문을 넣고 문자열에 연결하는 대신 반복 할 때마다 파일에 텍스트를 쓸 수 있습니다. 사전에 사전 주문이 없으므로이 프로그램이 원본 파일과 다른 순서로 파일을 만들 수 있다는 점을 고려하십시오. –

0

뭔가 :

나는 여기에 값을 읽어 내 현재 코드를 가지고

def txtf_exp2(xlist): 
    print("\n", xlist) 
    t = open("mytxt.txt", "w+") 

    # combines a list of lists into a list 
    ylist = [] 
    for i in range(len(xlist)): 
     newstr = xlist[i][0] + "\n" 
     ylist.append(newstr) 
     newstr = str(xlist[i][1]) + "\n" 
     ylist.append(newstr) 

    t.writelines(ylist) 
    t.seek(0) 
    print(t.read()) 
    t.close() 


def txtf_exp3(xlist): 
    # does the same as the function above but is simpler 
    print("\n", xlist) 
    t = open("mytext.txt", "w+") 
    for i in range(len(xlist)): 
     t.write(xlist[i][0] + "\n" + str(xlist[i][1]) + "\n") 
    t.seek(0) 
    print(t.read()) 
    t.close() 

당신은 일부 내용을 변경해야 할 것이다, 그러나 그것은 매우 유사 무엇 너는하려고하는거야.

+0

이봐 요, 어쩌면이게 어떻게 작동하는지 설명해 주시겠습니까? 나는 'xlist'에 익숙하지 않다. 그것은 새로운 라인을 인쇄하고 나서 xlist를하면 어떻게됩니까? – Micrified

+0

^죄송합니다 태그가 없습니다 – Micrified

+0

Xlist는 각 하위 목록이 문자열과 숫자 인 목록의 목록입니다. 각 문자열과 각 숫자는 새 행에 쓰여 지므로 수정해야합니다. 나는 예제 목록을 포함해야했다. – mistermarko

관련 문제