Konuyu Oyla:
  • Toplam: 3 Oy - Ortalama: 3.67
  • 1
  • 2
  • 3
  • 4
  • 5
Python Dili Soru & Cevap
rica ederim
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
bir diğer yol:

from dosya import *

bunun sayesinde diğer dosyayı olduğu gibi importlamış olursunuz
Ara
Cevapla
haa ayrıca şunu da belirteyim; eğer bir kodun içinde global olarak fonksiyon dışında for veya while döngüsü varsa ya da tanımlanan bir fonksiyonu global olarak çağıran bir değişken/satır varsa import ettiğinde onları da çalıştırmış olacaksın. Örnek;

dosya.py
PHP Kod:
25

for i in range(10):
    print 


PHP Kod:
>>> import dosya
0
1
2
3
4
5
6
7
8
9
>>> print dosya.a
25
>>> 

Görüldüğü gibi a değişkenini elde ettik fakat for döngüsü de çalıştı.

Başka bir örnek;
dosya.py
PHP Kod:
25

def fonksiyon
():
    print 
"fonksiyon calisti"
    
fonksiyon() 

import edelim
PHP Kod:
>>> import dosya
fonksiyon calisti
>>> print dosya.a
25
>>> 

Kodları hazırlarken bu gibi durumlarla karşılaşmamak için import edilecek kodları şu şekilde düzenlemek gerekir

dosya.py
PHP Kod:
25


def fonksiyon
():
    print 
"fonksiyon calisti"
    

if __name__ == "__main__":
    
fonksiyon() 

import edelim
PHP Kod:
>>> import dosya
>>> print dosya.a
25
>>> 

Görüldüğü gibi fonskiyon() çalışmadı. Başka bir örnek;
dosya.py
PHP Kod:
25

if __name__ == "__main__":
    for 
i in range(10):
        print 

import edelim
PHP Kod:
>>> import dosya
>>> print dosya.a
25
>>> 

aynı şekilde for döngüsü çalışmadı. Yani "if __name__ == '__main__':" ifadesi bize dosya.py kodunu direkt olarak çalıştırdığımızda gerekli fonksiyonları çalıştırmamızı sağlar, import ettiğimizde ise bu ifadenin altındakiler işlemez.
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
Anladim hocam
Ara
Cevapla
Arkadaşlar bir döngüde 10 tane dosya indirmek istiyorum yapamadım şunu bir türlü
Kod:
import requests
import re

downfile_id = 10

def get_filename_from_cd(cd):

   if not cd:
       return None
   fname = re.findall('filename=(.+)', cd)
   if len(fname) == 0:
       return None
   return fname[0]

for i in range(10):
   url = 'https://community.mybb.com/attachment.php?aid='
   r = requests.get(url + str(downfile_id), allow_redirects=True)
   filename = get_filename_from_cd(r.headers.get('content-disposition'))
   open(filename, 'wb').write(r.content)
   downfile_id +=1
Ara
Cevapla
@Selcuk en baştaki downfile_id assignmentını sil, aşşadaki downfile_idyi ise sadece i yap. sonra da değişkenleri döngüleri falan bi tekrar okuyup iyce anla
Ara
Cevapla
Evet aynen, excel'in dedikleri kodun şah damarı. Mutlaka ilk olarak onların düzeltilmesi gerek.

Fakat!

https://community.mybb.com/attachment.php?aid=1

adresine gittiğimizde "The specified attachment does not exist." yazısı ile karşılaşıyoruz. Bu ne demek? ya bu ek dosya gerçekten yok ya da indirebilmen için giriş yapman gerekli. Kodlarda da herhangi bir giriş formu post edilmediğine göre, döngüyü yapsan da yine bu ek dosyaları indiremeyeceksin. Haa eğer bu sadece bir örnekse ve asıl indirmen gereken adres farklıysa da

1- dosyaya kaydetme kısmında sorunlar yaşabilirsin, with kullanman daha uygun olacaktır, veya dosyayı close() ile kapatman...

with open("filename", "wb") as f: f.write(r.content)

2- dosya adını headerdan alamadığında None olarak döndürüyosun bu da ayrı bir hataya yol açacaktır, eğer 2 tane dosya adını alamazsan iki tane None isimli dosyan olmayacak, ikinci indirilen None isimli dosya ilk indirilenin üzerine yazılacaktır. Hatta bir önceki maddede dediğim gibi dosyayı kapatmadığın için ikinci None isimli dosyayı açamayacaksın bile.
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
(06-03-2019, Saat: 11:52)gecemor Nickli Kullanıcıdan Alıntı:  Evet aynen, excel'in dedikleri kodun şah damarı. Mutlaka ilk olarak onların düzeltilmesi gerek.

Fakat!

https://community.mybb.com/attachment.php?aid=1

adresine gittiğimizde "The specified attachment does not exist." yazısı ile karşılaşıyoruz. Bu ne demek? ya bu ek dosya gerçekten yok ya da indirebilmen için giriş yapman gerekli.

Yok abi dosyaları indirebiliyoruz sadece bazı aid= lerde yok
Örnek1 : https://community.mybb.com/attachment.php?aid=13
Örnek2 : https://community.mybb.com/attachment.php?aid=14
Örnek3 : https://community.mybb.com/attachment.php?aid=17


Önerdiğiniz gibi düzenlemeye çalıştım ama hata alıyorum
Kod:
~/Desktop# python down.py
Traceback (most recent call last):
 File "down.py", line 20, in <module>
   with open(filename, 'wb') as f:f.write(r.content)
TypeError: coercing to Unicode: need string or buffer, NoneType found

indirme sayısınıda 20 yaptım
Kod:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import re

def get_filename_from_cd(cd):

  if not cd:
      return None
  fname = re.findall('filename=(.+)', cd)
  if len(fname) == 0:
      return None
  return fname[0]

for i in range(21):
  url = 'https://community.mybb.com/attachment.php?aid='
  r = requests.get(url + str(i), allow_redirects=True)
  filename = get_filename_from_cd(r.headers.get('content-disposition'))
  with open(filename, 'wb') as f:f.write(r.content)

Bu arada @excel Teşekkür ederim
for döngüsündeki range'i araştırdım for i in range(21): 0 ile 21 arasındaki sayılar olacakmış düzelttim,yani 20 istiyorsam 21 yaptım
Ara
Cevapla
range(21) = [0 ..... 20]

şeklinde bir liste oluşturur, içinde 0 da dahil. indirme yaparken https://community.mybb.com/attachment.php?aid=0 ile karlışacak kod kaldı ki zaten bazıları çalışıyor diyosun, neyse zaten kayıt etse de sayfayı olduğu gibi kaydeder. Ama "None" mevzusuna da çözüm üretmemişsin, yani dediğim şekilde düzenlememişsin. Aldığın hata da bundan ibaret

>>> type(None)
<type 'NoneType'>

olacağından dosya adı type error yer, string oması gerek dosya adı olarak yazabilmen için.
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
gecemor ipucu için teşekkürler,birşeyler yaptım gibi ama doğrumu yanlış mı bilemiyorum birde başına ve sonuna tırnaklar ekliyor anlamadım gitti Sad

Kod:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import re

def get_filename_from_cd(cd):

  if not cd:
      return None
  fname = re.findall('filename=(.+)', cd)
  if len(fname) == 0:
      return None
  return fname[0]

for i in range(1, 21):
  url = 'https://community.mybb.com/attachment.php?aid='
  r = requests.get(url + str(i), allow_redirects=True)
  filename = get_filename_from_cd(r.headers.get('content-disposition'))
  if filename is None:
    continue
  with open(filename, 'wb') as f:f.write(r.content)
Ara
Cevapla

{lang: 'en'}


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  15gb .myd uzantılı dosya python ile okutma perry 1 616 27-11-2022, Saat: 17:59
Son Yorum: perry
  GÜNCEL Python request , c# request e göre çok yavaş ne yapabilirim perry 12 2,184 28-09-2022, Saat: 20:27
Son Yorum: krast
  YENİ Python Pyqt5 memory leak sorunu perry 3 776 28-09-2022, Saat: 11:33
Son Yorum: gecemor
  YENİ PYTHON ads approval CaglarDevv 2 1,025 04-07-2022, Saat: 01:23
Son Yorum: CaglarDevv
  python konusunda yardıma ihtiyacım var $cr!pt HUB 3 769 15-06-2022, Saat: 18:11
Son Yorum: CaglarDevv

Hızlı Menü:


Konuyu Okuyanlar: 5 Ziyaretçi
Change Theme