Wpis z mikrobloga

Mirki Pythoniarze, mam pewien problem. Próbuje umieścić cyfry od jednego do miliona w pliku za pomocą zapisu do pliku jednak nie działa mój sposób.

with open('milion.txt', 'w') as file_obj:

file_obj.write(value for value in range(1, 1000001))

Wiecie może w jaki sposób można to ogarnąć?xd

#python #programowanie
  • 22
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Sparrowekk:
Po pierwsze musisz wywołać "write" na każdym elemencie.
Po drugie używając () tworzysz generator, nie wywoła się bez zapytania. Możesz użyć [], czyli stworzyć listę, co spowoduje wykonanie write na każdym elemencie.

[file_obj.write(str(value)) for value in range(1, 1000001)]
  • Odpowiedz
@RapRose: Tak, był błąd dotyczący generatora: TypeError: write() argument must be str, not generator
@misza_zg: Wykorzystałem rozwiązanie, które mi napisałeś i pomogło. Zastanawia mnie jedynie czemu funkcja zapisu musi mieścić się w liście? format wartości na stringa musi być z racji że korzystam z metody write? Nie może być int?
  • Odpowiedz
@mcnight95: Okej, tak też działa. Mam tylko pytanie. Próbowałem te rozwiązanie zaimplementować do swojej listy składanej:

file_obj.write(f'{value}' for value in range(0, 1000001))
jednak wyświetla mi się błąd z generatorem. Czy jedyną opcją, która zadziała jest zwykła pętla for?
  • Odpowiedz
@Sparrowekk: dlaczego usilnie próbujesz zmusić go do zapisania generatora. Przecież krzyczy że chce stringa nie generator! "Write" zapisuje jednego stringa w jednym momencie, nie potrwafi sobie poradzić z wyciągnięciem stringów z generatora.
  • Odpowiedz