2017-01-12 2 views
0

그래서 txt 파일을 사용하여 데이터를 저장하는 스톡 파일 시스템을 만들었습니다. 재고 수준이 특정 값 아래로 떨어지면이 제품을 별도의 txt 파일에 삽입하려고합니다. 이 작업을 수행 할 때마다 파일에는 마지막 제품의 데이터 만 있습니다. 루프가 실행될 때마다 다음 제품의 데이터가 이전 제품의 데이터를 덮어 씁니다.Txt for 루프를 사용할 때 파일 줄이 서로 덮어 씁니다.

편집 : 나는 아마 내가 그런 SLref 각 값이 여기

에 할당 된 것입니다 데이터 soource로 사전을 사용 언급해야하는 코드입니다 :

with open("Under the Reorder Level.txt", "r+") as u: 
      for item in restockItem: 
       while count < len(restockItem): 

        u.write(gtin) 
        u.write(' ') 

        product = str(restockItem[count]) 
        u.write(product) 
        u.write(' ') 

        SLref = restockItemStock[count] 
        stocklevel = str(restockItemStock[count])) 
        u.write(stocklevel) 
        u.write(' ') 

        RLref = restockItemReorder[count] 
        reorderlevel = str(restockItemReorder[count]) 
        u.write(reorderlevel) 
        u.write(' ') 

        TLref = restockItemTarget[count] 
        targetlevel = str(restockItemTarget[count]) 
        u.write(targetlevel) 

        u.write(' ') 
        u.write('£') 
        u.write(' ') 

        Pref = restockItemPrice[count] 
        price = str(restockItemPrice[count]) 
        u.write(price) 

        u.write('\n') 

        count = count + 1 
        print (count) 
       u.close() 

TXT 파일 출력 읽

"09876545 티켓 6 10 50 100 £"

,174,515 15,

읽어야하는 경우 :

"12345670 늦는다 17 10 50 £ 1

10,101,018 포토 프레임 11 10 50 £ 15

09,876,545 티켓 6 10 50 £ 100"

편집 번호 2 : 코드가 실행될 때마다 잠재적으로 다를 수 있습니다. 재고 수준 아래의 일부 새 항목 또는 재고 수준 이하의 항목이있는 재고 수준. 이러한 항목이 더 이상 재고 수준 아래에 있지 않으면이 파일에이 항목을 쓰지 않으려합니다. 따라서 파일을 쓰기 전에 매번 파일을 지우고 싶습니다. 재고 수준 이하의 항목은이 코드 블록 바로 전에 감지 된 다음 위에 사용 된 "RestockItem"이라는 목록에 저장됩니다. 파일을 열 수있는 여러 가지 방법을 이해합니다. 현재 잘못하고있는 부분을 잘 모릅니다. 내 이전 오류가 수정되었습니다 그러나 나는이 루프를 사용하기 전에 파일을 지울 때 올바른 출력을 얻을 수 없습니다.

open("Under the Reorder Level.txt", 'w+').close() 
     with open("Under the Reorder Level.txt", "a+") as u: 
      for item in restockItem: 
       while count < len(restockItem): 

        u.write(gtin) 
        u.write(' ')open("Under the Reorder Level.txt", 'w+').close() 
     with open("Under the Reorder Level.txt", "a+") as u: 
      for item in restockItem: 
       while count < len(restockItem): 

        u.write(gtin) 
        u.write(' ') 
#carries on....... 
+0

내 생각에 데이터가 파일에 쓰여지고 있지 않습니다. 'with open'을 사용하면'close()'를 호출하여 파일을 닫을 필요가 없습니다. 파일이 열리고 닫힐 때를 예측하기는 어렵습니다. 문제의 근원이있을 가능성이 높습니다. –

+0

오, 감사합니다. 그리고 나는 그것이 쓰여지고있는 것을 볼 수 있습니다. 그러나 어떤 이유로 새로운 코드 줄을 사용할 때 한 줄만 쓰여지거나 각 줄이 다시 덮어 쓰여질 수 있습니까? – AntsOfTheSky

+1

나는 당신의 시간을 낭비했다는 것을 유감스럽게 생각하지만, 알아 냈습니다! 나는 그것을 옮기고 그것을 움직이게했기 때문에 새로운 라인을 틀린 장소에 넣었습니다 .. 도와 줘서 고마워, 정말 고마워! – AntsOfTheSky

답변

1

변경 플래그는 r+에서 a+에 파일을 엽니 다. 이것은 파일의 끝에 쓰고 읽는 것을 의미합니다.

Here is a difference between them explained on SO

완전히 파일을 덮어하려면

는, 당신은 쓰기 위해, 옵션 'W'사용할 수 있습니다. Here is a list of flags explained

+0

이 파일을 프로그램이 실행될 때마다 다시 작성됩니다. 따라서 주식 데이터가 변경되면이 파일이 최신 상태로 유지됩니다. 그렇지 않으면 데이터가 항상 추가됩니다. – AntsOfTheSky

+0

이전에 있었던 것만 추가한다는 것을 알았습니다. 이 코드 이전에 넣을 수있는 파일의 내용을 지우는 방법/코드 줄이 있습니까? – AntsOfTheSky

+0

위에서 본 코드 덩어리 앞에 "open ("Reorder Level.txt ", 'w +'). close()"행을 사용했으며 출력에는 지난 번과 같은 원하는 제품 중 하나만 표시되지만 그 코드의 최신 라인을 사용하지 않아도 괜찮습니까? – AntsOfTheSky