Farklı iki txt dosyasının kombinasyonu

Sayın Then_Shiffman, Türkçeden Türkçeye tercümen için teşekkür ederim.

Çözüm aklımda.

Ama yetişkin eğitimi ve pedagojik eğitim farklıdır.

Ben kendini ifade ederken sorunu kavraması ve çözümü kendi de bulabilmesi için uğraşıyorum.

Sanırım bunu ifade edemedim.

Bir seferde kodu koyup gitmeden önce adım adım ne istediğini ifade edebilsin.

Seni anlıyorum ama ben yaşlıyım, sabırla tek tek sormayı seviyorum.

Rahatsız ediyorsa yöntem değiştiremem, sonuçta seni de rahatsız etmek istemem.

2 Beğeni

ilk dosyadaki 1.milyon verinin yanın ikinci dosyadaki 10bin verinin 1. yazılacak
sonra yine
ilk dosyadaki 1.milyon verinin yanın ikinci dosyadaki 10bin verinin 2. yazılacak
sonra yine
ilk dosyadaki 1.milyon verinin yanın ikinci dosyadaki 10bin verinin 3. yazılacak
.
.
.
ilk dosyadaki 1.milyon verinin yanın ikinci dosyadaki 10bin verinin 10.000 yazılacak yani amaç bu

ve dediğim gibi her veri “” ve , ile ayrılmış
bunları notepad değiştir komutuyla değiştirebiliriz problem değil

hayır bunu örnek teşkil etmesi açısından yazdım
normal dosya çok sütunlu ve satırlı

Yok, yanlış soruyu birkaç kere sordunuz ondan yazma gereği duydum diğer arkadaş yanıt vermeden; çapraz çarpım olduğunu ilk gönderilerindeki örnekte belirtmişlerdi. Yoksa kimsenin gönderi yazarına sorduğu soruları baltalamak gibi bir niyetim yok tabii.

Burada gördüğüm arka arkaya veriler. Bunu şundan sordum.

Aslında bu veri satırlar halinde değil, yani read line şeklinde satır satır okuyamayız.

Ayıraçları belirleyip, her veriyi tek tek okuruz.

Sonrasında,

Birinci dosyadan oku, dosya sonuna geldik mi kontrol et, geldiyse bitir, gelmediyse ikinci adım.

İkinci dosyadan oku, dosya sonuna geldik mi kontrol et, geldikse dosya başına dön.

Kadar basit bir kod haline gelecektir.

Burada asıl mesele text dosyasında verileri alabilmek.

Bunun için hiç bir yöntem denedin mi?

Bir seferde bir veri okuttun mu hiç?

Then_Shiffman.

Baltalamak gibi algılamadım, evet siz hızlı olarak anlamışsınızdır. Benim de ısrarımın bir nedeni var. Forumda benzer bir soru daha var. Özellikle neye ihtiyacı olduğunu ifade edebilirlerse zaten algoritmayı da oluşturmuş olacaklar diye düşünüyorum.

Tekrar sorayım, eğer rahatsız ediyorsa kodun cevabını yapıştırıp giderim konulara. Tatsız tuzsuz bir forum olur gibi geliyor bana. Öğrenmeden eğlenmeden ödev soran çocuklara cevap yazar gibi yazmak istemiyorum.
:slight_smile:

1 Beğeni

Neye ihtiyacı olduklarını biliyorlar ve bir kod da paylaşmışlar diye ben de kod yazarak yanıt verdim. Zaten yazdıkları kodun benzeridir. Dosyanın gerçek satır sayısı ile Notepad’in gösterdiği arasında bir fark var, onu göz ardı ediyorlar, onun düzeltilmesi gerekir. "Kod yapıştırıp gitme"ye meyilli değilim, gönderileri bunun aksine yazmaya çalışıyorum.

Forum benim tekelimde değil ki?! Kimsenin yazdığı gönderileri engellemek gibi bir lüksüm de yok tabii. Rahatsız olduğum bir durum yok, yalnız bir yanlış anlaşılma vardı, yardım etmek adına onu düzelteyim, zamandan tasarruf olsun istemiştim. Onu da başaramadım.

Bu kod değil, DOS komut satırı aslında. Dosyaları neye göre birleştirmek istediğini ifade etmesini istiyorum. Ard arda neden eklemeyip birleştirmek istediğini irdeliyorum.

Zamandan tasarruf etmek ile ne istediğini anlamk ve kendini ifade etmek arasında bir denge kurarız çok da zaman kaybettirmeyiz diye düşünüyorum.

Gönderilerimi engellemek demeyelim, rahatsız edici ise metod değiştiririm diyorum.

Kavramadan çözüm vermek bana göre çözüm olmuyor, bir sonraki adımda tekrar takılabiliyorlar.

Peki, özür diliyorum ekstra gönderiler için.

sn mundulu, aslında split komutu ile deneyebilirdik ama işi biraz daha kolaylaştırsak.

How to Replace Any Character with Newlines in Notepad++ (howtogeek.com)

Bu şekilde her satırda bir veri olarak metin dosyalarını oluştursak.

O zaman readline ile rahat çalışabiliriz.

Sizce verileri formatlamamamızın bir sakıncası olur mu?

Ben özür dilerim eğer niyetimi aktaramadığım ve sizi rahatsız edici kalabalık yazılar yazdığım için.

Biraz bakış açım farklı gelebilir. Burada forum muhtar adayı değilim. Egom yok, bir şey ispata uğraşmıyorum.

Önemli olan biri soru sorduğunda, iyice kendini ifade etmesini sağlamak ve programlamayı kavramasını sağlamak.

Aceleci değilim ve uzun uzun yazmayı seviyorum. Biraz kısaltmayı deneyebilirim. :slight_smile:

yeni üye olduğum için günlük cevap limitim doldu
arkadaşın adına yeni kayıt yaptık

farklı sitelerden denk geldiğimiz kombinasyon kodlarının hiçbiri text dosyana çaprazlama yapamadı
sadece bilgileri alıp 1. txt bittikten sonra 2.txt olarak yazdı

yani şöyle
[‘9331101114’, ‘9331101116’, ‘9331101117’ , ‘120110’, ‘120111’, ‘120112’…]

hepimizin amacı üzüm yemek

siz kendi bilgisyarınızda denediğinizde çalışıyorsa bize gönderebilirsiniz bizde aynısı kopyala yapıştır yaparız

dediğimiz gibi acemi olduğumuz için adını söylediğiniz kodları tekrar tekrar incelememşz gerekşr buda çok vakit kaybı olur

anlaşıyınız için hepinize teşekkür ederiz

Merhaba bir cevap limiti olduğunu da öğrenmiş olduk.

Konuyu anladım.

Az önce verdiğim linkteki gibi verileri birer satıra dönüştürürseniz. Her satırda bir veri okumuş olursunuz.

Bu durumda birinci dosyanın sonuna gelene kadar ikinci dosyadan birer satır okuyup iki satırı birleştirmeniz kolay olur.

Zorlanırsanız bir kod yazabiliriz.

basit iki dosya açıp denedik
satır satır olsa dahi yine olmadı
[‘elma\n1\n’, ‘elma\n2\n’, ‘elma\n3\n’, ‘elma\n4\n’, ‘elma\n5\n’, ‘elma\n6’]

yeni kullanıcılar için günlük mesaj limiti var o nedenle deneyip gönderebilirseniz daha iyi olur
aksi halde gönderdiklerinizi denesek olmasa bile mesaj sınır dolduğu için cevap veremeyebiliriz bu defada sanki sorun çözülmüş sanılabilir

Tamam. Şurada anlaşalım.

Verilerini formatlamazsak vereceğimiz kodların hiç biri işe yaramaz. Bu kadar mesajı sırf senin dosyalarındaki veriler nasıl dizilmiş anlamak için kullandık maalesef.

How to Replace Any Character with Newlines in Notepad++ (howtogeek.com)

Bu linkte tarif edildiği gibi verilerindeki , virgülleri end of line a çevirmen gerekiyor. Notepad ile yapamazsın. notepad++ kullan.

Ayrıca varsa tırnakları da aynı mantıkla kaldır, ki her satırda sadece bir data olacak şekilde veriler hizalansın.

Neden bunu yaptırdığımız sonra uzunca anlatırım.

İki dosyan oluştuktan sonra, ancak oluşan duruma göre kod verebilirim.

Aksi halde, bu da olmadı, bu da olmadı yazacaksın ki bu hiç istemediğim bir durum.

Hatta Then_Stiffman in verdiği kod işe yarayacaktır o durumda.

Ufak bir düzeltme gerekecek hepsi bu.

Dataları oluşturun.

Tamam derseniz kodu ekleyelim.

Çünkü duymayı en sevmediğim şey bu da olmadı. :slight_smile:

Sn Then_Shiffman:

Şimdi soruyu soran katılımcı, iki metin dosyasında, her satırda bir tane veri olacak şekilde dosyaları biçimlendirirse,

Rica etsem.

Kodu yazabilir misin?

Birinci dosyadan satır oku, ikinci dosyadan satır oku birleştir.

İkinci dosyanın sonuna geldiyse başa dön.

Taki ilk dosya bitene kadar şeklinde.

Yardımcı olabilir misin?

İlk gönderide var product ile.

Örnek dosyada çalıştı

lakin asıl dosyada satır sayısı bir kaç milyonu bulduğu için çalışmıyor her denememde takrar donuyor
bunu belli bir satır sayısına geldikten sonra 2. 3. vs sütunlara geçebilecek şekilde ayarlaya biliyor muyuz
teşekkür ederim

Şunu dener misin?

filehandle1 = open('file1.txt', 'r')
filehandle2 = open('file2.txt', 'r')
filehandle3 = open('file3.txt', 'w')

while True:
    line1 = filehandle1.readline()
    line2 = filehandle2.readline()
    
    if not line1:
        break
        
    if not line2:
        filehandle2.close
        filehandle2 = open('file2.txt', 'r')
        line2 = filehandle2.readline()
    filehandle3.write(line1.strip()+line2.strip()+'\n')


filehandle1.close()
filehandle2.close()
filehandle3.close()

Biraz uzun sürebilir ama deneyebilir misin?

Tabi verileri tek satırlara dönüştürebildiğini varsayarsak.

İki dosya oluşturup denedim. Eğer dosyalarını atarsan birleştirmesini de deneyebilirim.

Bir yere yükleyip link atmanda sakınca yoksa?

1 Beğeni

Kodda sorun yok ama verilerinde sorun var.

Önce bunu çözmemiz gerekiyordu.

Verileri satır satır almamış, virgülle arka arkaya eklemiş. Ve satır sonu işareti yoksa tüm dosyayı tek satıra çekmeye çalışabilirsin.

Bu nedenle ilk gördüğümde verileri işlemek gerektiğini düşündüm.

Virgüllerden ayırmak ve tırnakları kaldırmak için kod yazabilirdik.

Ama bu kadarı için kod yazmak istemedim.

Veri dosyasını anlamadan iç içe iki loopla yapmak en kolayı.

Bu nedenle bazan ısrarla sorarım. Python limitlerini kestiremediğim readline ile bir yere kadar dedim.

Hatta file mapping yapıp, alt blolara bölüp, multithread çalışsam mı diye dahi düşündüm.

Benim takıldığım cümle, ama dize uzun milyonlarca kısmı oldu bu yüzden.

Özellikle arka arkaya kopyala dedim ki, öyle istemiyorum veri dosyam şöyle bakın desin istedim.