Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 12 Dołączył: 16.07.2006 Skąd: : getCity ( ); Ostrzeżenie: (0%)
|
czesc
mam problem mam plik tekstowy, ktory ma 500tys linii. chce go podzielic na kilkaset plikow po 200 linii jak to zrobic? chodzi mi o algorytm |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%)
|
No dobra a gdzie problem? (IMG:style_emoticons/default/smile.gif)
Tutaj jest pomoc a nie gotowe rozwiązania. |
|
|
|
Post
#3
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
1) Otwierasz jeden duży plik $f1 (fopen)
2) Otwierasz drugi plik do którego bedziesz zapisywać $f2 3) Lecisz po $f1 while + feof 4) Odczytujesz linijke fgets 5) wrzucasz do $f2 fwrite 6) oczywiście organizujesz sobie jakieś liczniki np co do ilości linii albo ilości bajtów. W momencie przekroczenia jakiegoś limitu zamykasz $f2 i tworzysz drugi pod inną nazwą. |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 12 Dołączył: 16.07.2006 Skąd: : getCity ( ); Ostrzeżenie: (0%)
|
mi chodzi o cos takiego:"
otwieram plik file() i np w pętli for lece for($i=0; $i<count($open); $i++) { if($i%200 != 0) { } } jakos tak jak to dokladnie napisac zeby np zapisywal dobrze |
|
|
|
Post
#5
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
No to najprosciej uzyc file_put_contents.
Ale nie wiem jak ty chcesz otworzyć tak duzy plik za pomoca file... najszybciej będzie właśnie z fopen |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 12 Dołączył: 16.07.2006 Skąd: : getCity ( ); Ostrzeżenie: (0%)
|
no ok tak zrobie, ale nie wiesz dokladnie o co mi chodzi
nie wiem jak napisac ten algorytm zeby po wielokrotnosci np 200 zapisywało te linie do nowego pliku tekstowego o nazwie part_1.txt gdzie 1 to kolejna cyfra dpisywana automatycznie dobrze kombinuje z modulo? |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%)
|
dobrze kombinuje z modulo? No pięknie kombinujesz ale po co (IMG:style_emoticons/default/questionmark.gif) Kolega dał Ci prawie gotowca wystarczy przeczytać i się zastanowić. Zobacz sobie jak w jakim tempie załaduje Ci się tablica 5000 rekordów z pliku. |
|
|
|
Post
#8
|
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk |
Wersja z modulo
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%)
|
no ok tak zrobie, ale nie wiesz dokladnie o co mi chodzi nie wiem jak napisac ten algorytm zeby po wielokrotnosci np 200 zapisywało te linie do nowego pliku tekstowego o nazwie part_1.txt gdzie 1 to kolejna cyfra dpisywana automatycznie dobrze kombinuje z modulo? Może być i moduło ale ja wymyśliłem na poczekaniu coś takiego:
ale nie wiem czy działa bo nie mogę przetestować. |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 12 Dołączył: 16.07.2006 Skąd: : getCity ( ); Ostrzeżenie: (0%)
|
tak to bym sam potrafil, ale nadal nie doszlismy do sedna sprawy, jak te linie zapisac wg wielokrotnosci 200
np dajmy na to pętla przeleciała pierwsze 200 linii, limit uopłynął i trzeba zapisać te linie do pliku, potem leci kolejne 200 i zapisuje te kolejne 200 |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%)
|
tak to bym sam potrafil, ale nadal nie doszlismy do sedna sprawy, jak te linie zapisac wg wielokrotnosci 200 np dajmy na to pętla przeleciała pierwsze 200 linii, limit uopłynął i trzeba zapisać te linie do pliku, potem leci kolejne 200 i zapisuje te kolejne 200 To też Ci pokazałem +/- jak masz to zrobić... Skoro byś sam potrafił, to mogłeś nie pytać tylko robić samemu... Ten post edytował fifi209 22.07.2010, 21:54:18 |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 12 Dołączył: 16.07.2006 Skąd: : getCity ( ); Ostrzeżenie: (0%)
|
nie chodzilo o ciebie, twoje rozwiązanie działa pięknie z tym ze wstawia podwójne linie tzn puste linie są też, ale ogolnie ok, daje plusik
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%)
|
|
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 12 Dołączył: 16.07.2006 Skąd: : getCity ( ); Ostrzeżenie: (0%)
|
wziąłem sobie strimowałem trim() i smiga
|
|
|
|
![]() ![]() |
|
Aktualny czas: 25.12.2025 - 11:19 |