Ana sayfa Genel Python – Dosyalar

Python – Dosyalar

1754
82
PAYLAŞ

Python – Dosyalar

Dosya Açma ve Yazma İşlemleri

Bu konuyla beraber dosya üzerinde işlemler yapmaya başlayacağız.

Dosya Açmak

Bir dosyayı açmak için open() fonksiyonunu kullanıyoruz. Yapısı şu şekildedir;

Dosya adını istediğimiz isimde verebiliriz. Dosya erişme kipi ise bizim dosya üzerindeki işlemlerimizi belirler. Bunları dersler boyunca yavaş yavaş göreceğiz.

“w” dosya kipi

Dosyalarımızı açmak ve dosyalarımıza yazmak için “write” anlamına gelen “w” kipini kullanıyoruz. “w” kipi eğer oluşturmak istediğimiz dizinde öyle bir dosya yoksa dosyayı oluşturuyor , eğer öyle bir dosya varsa dosyayı silip tekrar oluşturuyor. Yani, eğer açmak istediğimiz dosyadan zaten varsa ve dosyanın içi doluysa “w” kipi dosyadaki bilgileri silip tekrar oluşturacaktır. (Biraz Tehlikeli)

Dosyaları Kapatmak

Bir dosya üzerinde işlem yaptığımızda o dosyayı kapatmak sistem kaynaklarının gereksiz kullanılmaması açısından önemlidir. Çünkü programımız bitse bile dosyanın kapanacağı garanti değildir. Bu yüzden işlerimiz bittiği zaman dosyayı kapatmalıyız.

Eğer bir dosyayı bulunduğumuz dizinde değil de başka bir dizinde açmak istersek, dizinin yolunu özellikle belirtmeliyiz.

(Windows işletim sistemi kullanıyorum. Başka işletim sistemleri için yapamazsanız bana ulaşabilirsiniz 🙂 )

“w” Kipiyle Dosyalara Yazmak

İlk olarak dosyayı “w” kipiyle açıyoruz.

Gördüğümüz gibi write fonksiyonuyla dosyamıza herhangi bir şey yazabiliyoruz. Ancak “w” kipi her seferinde dosyayı tekrar oluşturduğu için dosyayı tekrar açtığımızda bilgiler kaybolacaktır.

“a” Kipiyle Dosyalara Yazmak

“append” (ekleme) kelimesinin kısaltması olan “a” kipiyle bir dosyayı açtığımızda , dosya eğer yoksa oluşturulur. Eğer öyle bir dosya mevcut ise, dosya tekrar oluşturulmaz ve dosya imleci dosyanın sonuna giderek dosyaya ekleme yapmamızı sağlar.

Dosyayı tekrar açalım.

Ancak eğer buradaki isimleri dosyalara alt alta yazmak istersek “\n” karakterini kullanmalıyız.

 

Dosya Okuma İşlemleri

Dosyaları okumak ve verileri almak için “r” kipiyle açmamız gerekiyor. “r” kipiyle açtığımız dosya eğer bulunmuyorsa “FileNotFoundError” hatası dönecektir. Şimdi bulunduğumuz dizinde bulunan “bilgiler.txt” dosyasını açalım.

Dosya işlemlerini daha güvenli yazmak try,except bloklarını kullanabilirsiniz.

Peki bir dosyanın içinden bilgileri nasıl okuyacağız ? Bunun için Pythonda değişik yöntemler bulunuyor. İsterseniz bu yöntemleri tek tek görmeye çalışalım.

For döngüsü ile okuma

Şöyle bir kullanım dosyamızdaki herbir satırı tek tek okuyacaktır.

Burada her bir satırımız boşluklu yazıldı. Bunun nedeni, hem her satır sonunda “\n” karakterinin olması hem de print fonksiyonun bir alt satıra geçmek için boşluk bırakmasıdır. Bunu önlemek için varsayılan değer olarak “\n” karakteri alan end parametresine kendimiz değer verebiliriz.

read() fonksiyonu

read() fonksiyonu eğer içine hiçbir değer vermezsek bütün dosyamızı okuyacaktır.

read() fonksiyonuna değer vererek belli bir kısmı okumayı bir sonraki dersimizde görmeye çalışsak daha doğru olur.

read() fonksiyonuyla bir dosyayı okuduğumuzda dosya imlecimiz dosyanın en sonuna gider ve read() fonksiyonu 2. okuma da artık boş string döner.

readline() fonksiyonu

readline() fonksiyonu her çağrıldığında dosyanın sadece bir satırını okur. Her seferinde dosya imlecimiz (file) bir satır atlayarak devam eder.

readlines() fonksiyonu

readlines() fonksiyonu dosyanın bütün satırları bir liste şeklinde döner.

Dosyalarda Kullanılan Fonksiyonlar

Dosyaları Otomatik Kapatma

Dosyalarda işlemlerimiz bittiği zaman dosyamızı kapatmamız gerektiğini biliyoruz. Ancak programlamacılık doğası gereği çoğu zaman dosyaları kapatmayı unutabiliriz. Bunun için Pythonda dosyalarda işimiz bitince otomatik kapatma özelliği bulunuyor. Bundan sonra Pythonda dosya işlemlerimizi şu blok içinde yapacağız.

Örneğimize bakalım.

Eğer dosya işlemlerini bu blok içinde yaparsak işlemimiz bittiği zaman dosyamız otomatik olarak kapanacaktır.

Dosyaları İleri Geri Sarmak

Biliyorsunuz önceki dersimizde dosyaları okurken sadece dosyanın en başından başlayabiliyorduk ve dosya imlecimiz okuma işleminin sonunda , dosyanın en sonuna gidiyordu. Ancak biz çoğu zaman dosya imlecini (file) dosyanın herhangi bir yerine götürmek isteyebiliriz. Bunun için Pythondaki seek() fonksiyonunu kullanacağız. Ancak ondan önce dosya imlecinin hangi byteda olduğunu söyleyen tell() fonksiyonuna bakalım.


Şu anda hiçbir işlem yapmadığımız için tell() fonksiyonu dosyanın en başında (0. byteda) olduğumuzu söyledi. Peki bir dosya imlecini dosyanın 20.byte’ına götürmek için ne yapacağız ? Bunun için de seek() fonksiyonunu kullanacağız.

Peki biz bir dosyanın belirli bir byte’ına(karakter) gidip sadece belli sayıda karakteri nasıl okuyacağız ? Eğer biz read() fonksiyonuna bir sayı değeri verirsek sadece o sayı değeri kadar alanı okuyacaktır. Hemen görelim.

Dosyalarda Değişiklik Yapmak

seek() ve write()

Eğer biz bir dosyanın belli bir yerine seek() fonksiyonu ile gidip, write() fonksiyonunu kullanırsak, yazdığımız değerler öncesinde bulunan değerlerin üzerine yazılacaktır. Bunun için hem okuma hem de yazma işlemimizi yapmamızı sağlayan “r+” kipini kullanacağız. İlk önce dosyamızda bilgileri görelim.

Bu şekilde bir şeyler yapmak isterseniz bu yöntemi kullanabilirsiniz

Dosyanın Sonunda Değişiklik Yapmak

Bu işlemlerin en kolayıyla başlayalım. Dosyaların sonunda değişiklik yapmak için, dosyamızı “a” kipiyle açalım ve sadece dosyanın sonuna write() ile ekleme yapalım.


Dosyanın Başında Değişiklik Yapmak

“bilgiler.txt” dosyamızın başına bir tane satır eklemek için ne yapabiliriz ? Bunun için dosyamızı bütünüyle string halinde alıp daha sonra satırımızı string’in başına eklememiz gerekiyor. Daha sonra dosyanın en başına seek() fonksiyonuyla giderek ,direk write() fonksiyonunu kullanabiliriz. Hemen yapalım.




İşte bu kadar ! Son olarak da dosyaların ortasında değişiklik yapmayı öğrenmeye çalışalım.

Dosyanın Ortasında Değişiklik Yapmak

Dosyaların ortasına herhangi bir satır eklemek için ilk olarak her bir satırı liste halinde almamızı sağlayan readlines() fonksiyonunu kullanacağız. Daha sonra bu listenin herhangi bir yerine bir eleman ekleyerek bu listeyi for döngüsü ile dosyaya yazacağız.

Örneğin , “Oğuz Artıran” satırının altına bir tane daha satır eklemek istiyoruz. Bunun için bu listenin 3.indeksine insert() metoduyla bir satır ekleyeceğiz. Daha sonra dosyanın en başına giderek bu listeyi tek tek for döngüsü ile yazacağız.

Pythonda bir dosyaya listenin içindeki değerleri yazmak için for döngüsü dışında pratik bir fonksiyon bulunuyor. writelines fonksiyonu içine verdiğimiz listeyi dosyaya yazacaktır.

İşte bu kadar ! Gördüğünüz gibi dosyalarda işlem yapabilmek için biraz fazla düşünmemiz gerekiyor. İlk başta zorlanacağınızdan eminim . Zorlandığınız zaman sorularınızı her zaman sorabilirsiniz.

82 YORUMLAR

  1. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You clearly know what youre talking about, why throw away your intelligence on just posting videos to your site when you could be giving us something enlightening to read?

  2. Hiya, I’m really glad I’ve found this info. Nowadays bloggers publish only about gossips and internet and this is really irritating. A good web site with exciting content, this is what I need. Thanks for keeping this web-site, I’ll be visiting it. Do you do newsletters? Can not find it.

  3. What i do not realize is actually how you are not actually much more well-liked than you might be right now. You’re so intelligent. You realize thus significantly relating to this subject, made me personally consider it from numerous varied angles. Its like men and women aren’t fascinated unless it is one thing to do with Lady gaga! Your own stuffs nice. Always maintain it up!

  4. I found your weblog site on google and test just a few of your early posts. Proceed to keep up the excellent operate. I just further up your RSS feed to my MSN News Reader. Searching for forward to reading extra from you later on!…

  5. Do you mind if I quote a couple of your posts as long as I provide credit and sources back to your weblog? My blog is in the very same area of interest as yours and my visitors would genuinely benefit from some of the information you present here. Please let me know if this okay with you. Thanks a lot!

  6. My brother suggested I might like this web site. He was entirely right. This post truly made my day. You cann’t imagine just how much time I had spent for this information! Thanks!

  7. What i do not realize is actually how you’re now not really a lot more neatly-liked than you might be right now. You are so intelligent. You understand thus considerably on the subject of this matter, made me personally imagine it from numerous varied angles. Its like women and men aren’t interested except it’s something to do with Lady gaga! Your own stuffs great. Always care for it up!

  8. Do you have a spam problem on this website; I also am a blogger, and I was curious about your situation; we have created some nice procedures and we are looking to swap strategies with others, be sure to shoot me an email if interested.

  9. I have learn a few excellent stuff here. Definitely worth bookmarking for revisiting. I wonder how much attempt you place to create any such excellent informative site.

  10. I’ve been browsing online more than 3 hours today, yet I never found any interesting article like yours. It is pretty worth enough for me. In my opinion, if all webmasters and bloggers made good content as you did, the web will be a lot more useful than ever before.

  11. I have been surfing online more than three hours nowadays, but I by no means found any fascinating article like yours. It’s beautiful price sufficient for me. Personally, if all webmasters and bloggers made just right content as you probably did, the internet can be much more helpful than ever before. “Perfection of moral virtue does not wholly take away the passions, but regulates them.” by Saint Thomas Aquinas.

  12. Hola! I’ve been reading your site for a long time now and finally got the courage to go ahead and give you a shout out from Humble Tx! Just wanted to tell you keep up the excellent work!

  13. I love what you guys are up too. This type of clever work and coverage! Keep up the great works guys I’ve incorporated you guys to my own blogroll.

  14. When I initially commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get three emails with the same comment. Is there any way you can remove people from that service? Cheers!

  15. Sling tv coupons and promo codes for november 2018
    Howdy just wanted to give you a quick heads up.
    The text in your content seem to be running off the screen in Safari.

    I’m not sure if this is a format issue or something
    to do with web browser compatibility but I
    thought I’d post to let you know. The layout look great though!
    Hope you get the problem fixed soon. Cheers sling tv coupons
    and promo codes for november 2018

  16. I used to be suggested this web site via my cousin. I am now not positive whether this submit is written via him as nobody else recognise such particular about my problem. You’re amazing! Thanks!

  17. I believe this internet site has some real superb information for everyone :D. “The test of every religious, political, or educational system is the man that it forms.” by Henri Frdric Amiel.

  18. It is really a nice and useful piece of information. I¦m happy that you simply shared this helpful information with us. Please keep us up to date like this. Thank you for sharing.

  19. I and my pals happened to be examining the excellent pointers from your website then suddenly I had an awful feeling I never expressed respect to the website owner for those secrets. All the women ended up totally stimulated to see all of them and have now seriously been taking pleasure in them. Appreciation for really being simply helpful and also for opting for this sort of beneficial tips most people are really needing to be informed on. My personal honest regret for not expressing appreciation to earlier.

  20. Thanks for the sensible critique. Me & my neighbor were just preparing to do a little research about this. We got a grab a book from our local library but I think I learned more from this post. I am very glad to see such magnificent info being shared freely out there.

  21. You actually make it appear really easy together with your presentation however I to find this matter to be really one thing that I feel I’d by no means understand. It kind of feels too complex and very vast for me. I’m having a look forward on your subsequent post, I¦ll try to get the cling of it!

  22. Aw, this was a really nice post. In thought I want to put in writing like this additionally – taking time and actual effort to make an excellent article… however what can I say… I procrastinate alot and in no way seem to get one thing done.

  23. I was suggested this website by my cousin. I’m not sure whether this post is written by him as no one else know such detailed about my difficulty. You are incredible! Thanks!

  24. It’s appropriate time to make some plans for the future and it is time to be happy.
    I’ve read this post and if I could I wish to suggest you few interesting things or suggestions.
    Perhaps you can write next articles referring to this article.
    I desire to read even more things about it! Howdy would you
    mind letting me know which hosting company you’re utilizing?
    I’ve loaded your blog in 3 completely different
    internet browsers and I must say this blog loads a
    lot quicker then most. Can you recommend a good hosting provider at a reasonable
    price? Thank you, I appreciate it! It is perfect time to make some plans for the future and it’s time
    to be happy. I’ve read this post and if I could I want to suggest you some interesting things or advice.
    Maybe you can write next articles referring to this article.
    I want to read even more things about it! http://foxnews.co.uk

  25. 通過水光療程抑制黑色素細胞生長的成分注射到真皮層,減少黑色素形成,淡化黑斑色素沉澱,從而達到美白祛斑的效果 療程特色 :可配搭多元化產品來量身訂做不同療​​程計算機化規格,操作方便,容易控制可調節進針深度,精準注射於目標的肌膚層 每針的注射劑量相等,達到均勻注射 一次平均5點注射,可縮短療程時間 採用31號細針頭,幾乎看不到入針點 降低疼痛、瘀血、腫脹及不適感 使用靈活度高,可複合式搭配針劑,量身訂製療程

  26. Howdy I am so excited I found your website, I really found you by mistake, while I was researching on Askjeeve for something else, Regardless I am here now and would just like to say thank you for a incredible post and a all round enjoyable blog (I also love the theme/design), I don’t have time to go through it all at the minute but I have bookmarked it and also added in your RSS feeds, so when I have time I will be back to read a great deal more, Please do keep up the excellent job.

  27. What i don’t understood is in fact how you’re now not actually much more smartly-appreciated than you may be now. You are very intelligent. You recognize thus considerably on the subject of this topic, made me in my view consider it from a lot of numerous angles. Its like men and women aren’t fascinated unless it is something to accomplish with Girl gaga! Your own stuffs excellent. At all times care for it up!

  28. I just could not depart your website prior to suggesting that I actually enjoyed the standard information a person provide for your visitors? Is gonna be back often to check up on new posts

  29. Hey, I think your site might be having browser compatibility issues. When I look at your blog site in Chrome, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, superb blog!

  30. Nice read, I just passed this onto a friend who was doing some research on that. And he actually bought me lunch as I found it for him smile So let me rephrase that: Thanks for lunch!

  31. I am curious to find out what blog system you’re working with? I’m experiencing some small security issues with my latest site and I’d like to find something more risk-free. Do you have any solutions?

  32. I keep listening to the news update speak about getting free online grant applications so I have been looking around for the most excellent site to get one. Could you tell me please, where could i acquire some?

  33. I’ve been browsing online more than 3 hours today, yet I never found any interesting article like yours. It’s pretty worth enough for me. In my opinion, if all web owners and bloggers made good content as you did, the internet will be a lot more useful than ever before.

  34. Good ?V I should definitely pronounce, impressed with your web site. I had no trouble navigating through all tabs as well as related information ended up being truly simple to do to access. I recently found what I hoped for before you know it at all. Quite unusual. Is likely to appreciate it for those who add forums or anything, site theme . a tones way for your customer to communicate. Nice task..

  35. I’m extremely impressed together with your writing skills and also with the format on your blog. Is this a paid subject matter or did you modify it your self? Anyway stay up the excellent high quality writing, it is rare to see a nice blog like this one these days..

  36. Nice post. I be taught one thing tougher on completely different blogs everyday. It should always be stimulating to learn content from other writers and follow slightly something from their store. I’d desire to make use of some with the content material on my weblog whether or not you don’t mind. Natually I’ll offer you a hyperlink on your internet blog. Thanks for sharing.

  37. Nice blog here! Also your web site loads up very fast! What web host are you using? Can I get your affiliate link to your host? I wish my web site loaded up as fast as yours lol

BİR CEVAP BIRAK

Lütfen yorumunuzu giriniz
Buraya isminizi giriniz