Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2013 13:41:34

Stepe
Зарегистрирован: 2013-09-03
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

Добрый день. Долго ищю информацию о том каким образом возможно передать значение переменой в название файла куда будет записываться какой либо результат.
Например

 p = open ("text.txt" , 'r')
for line in text :
    a = b+c
    g = open(line, 'w')
    g.write(a)
     
line - строка в файле, я хочу что бы именно этой срокой назывался файл куда записывается переменная а, как это можно сделать?

Офлайн

#2 Сен. 9, 2013 14:02:29

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

В название файла передать значение переменной

Прочитайте первую строку из файла, используйте эту информацию чтобы построить новое имя файла, далее запишите в файл с новым именем нужные данные.

Офлайн

#3 Сен. 9, 2013 14:04:30

Stepe
Зарегистрирован: 2013-09-03
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

lorien
используйте эту информацию чтобы построить новое имя файла, далее запишите в файл с новым именем нужные данные.
Не понял, можете привести пример?

Офлайн

#4 Сен. 9, 2013 14:17:53

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

Ваш код:

p = open ("text.txt" , 'r')
for line in text :
    a = b+c
    g = open(line, 'w')
    g.write(a)

Вопросы:

1. Откуда взялась переменная text?
2. Если Вы открыли файл, соизвольте его закрыть!
3. Откуда беруться переменные a, b, c?

Даю код, но Вы внимательно его просмотрите. Если будут вопросы - пишите.

file_ = open ("text.txt" , 'r')
for new_name_file in file_:
    str_to_file = "Name file is %s" % (new_name_file)
    vrs = open(new_name_file, 'w')
    vrs.write(str_to_file)
    vrs.close()
file_.close()

Еще возможно, если имена файлов перечислены в отдельных строках, нужно будет сделать

vrs = open(new_name_file.rstrip(), 'w') # Убираем символ переноса строки \n



Отредактировано 4kpt (Сен. 9, 2013 14:23:59)

Офлайн

#5 Сен. 9, 2013 14:23:47

Stepe
Зарегистрирован: 2013-09-03
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

Спасибо.
Это просто я привел пример.
Вот фрагмент реального кода, где я хочу изменять название файла :

with urllib.request.urlopen(arch) as archdata,open('m.gz', 'wb') as fout:
        fout.write(archdata.read())
По принципу есть какой то исходный текстовый файл, прочитывается первая строка выполняются операции, и эта страка становится названием файла, потом следующая строка и так далее.

Файл такого типа:
какое-то-название1
какое-то-название2
какое-то-название1
.
.
.
.
какое-то-названиеn

Вот полный код скрипта :
import re
import urllib.request as req
import urllib
proxy=req.ProxyHandler({'http':r'http://**@10.5.45.250:3128'})
auth = req.HTTPBasicAuthHandler()
opener = req.build_opener(proxy, auth, req.HTTPHandler)
req.install_opener(opener)
a = input('введите начальную дату(меньшую): ')
b = input ('введите месяц меньший : ')
c = input ('введите год меньший : ')
a1 = input('введите дату конечную(бОльшую): ')
b1 = input ('введите месяц бОльший : ')
c1 = input('введите год бОльший : ')
cod = open("cod.txt",'r')
for m in cod:
   url = 'http://rp5.ru/inc/f_archive.php'
 dataaa='wmo_id={}&f_ed0={}&f_ed1={}&f_ed2={}&f_ed3=1&f_ed4=0&f_ed5=0&f_ed6={}&f_ed7=  {}&f_ed8={}&f_pe=1&f_pe1=1&lng_id=2'.format(m,a,b,c,a1,b1,c1)
 script_data = dataaa.encode('latin1')
 with urllib.request.urlopen(url, data=script_data) as data:
    arch = re.findall(r'<a href=([^<]*?)>',
                      data.read().decode('latin1'))[0]
     with urllib.request.urlopen(arch) as archdata,open('m.gz', 'wb') as fout:
        fout.write(archdata.read())

и собственно хотелось бы что бы здесь open('m.gz', ‘wb’) - название файла было равно m.
Как сделать не понимаю

Отредактировано Stepe (Сен. 9, 2013 14:31:16)

Офлайн

#6 Сен. 9, 2013 16:09:50

Tisov
Зарегистрирован: 2012-04-26
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

Stepe
и собственно хотелось бы что бы здесь open('m.gz', ‘wb’) - название файла было равно m.
m = 'blabla'
f = open('%s.gz' % m, 'wb')

Отредактировано Tisov (Сен. 9, 2013 16:12:15)

Офлайн

#7 Сен. 9, 2013 16:34:40

Stepe
Зарегистрирован: 2013-09-03
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

Спасибо, а как мне убрать символ перехода на новую строку?

cod = open("cod.txt".rstrip(),'r')
for m in cod:
   url = 'http://rp5.ru/inc/f_archive.php'
 dataaa='wmo_id={}&f_ed0={}&f_ed1={}&f_ed2={}&f_ed3=1&f_ed4=0&f_ed5=0&f_ed6={}&f_ed7=  {}&f_ed8={}&f_pe=1&f_pe1=1&lng_id=2'.format(m,a,b,c,a1,b1,c1)
 script_data = dataaa.encode('latin1')
 with urllib.request.urlopen(url, data=script_data) as data:
    arch = re.findall(r'<a href=([^<]*?)>',
                      data.read().decode('latin1'))[0]
     with urllib.request.urlopen(arch) as archdata,open('m.gz', 'wb') as fout:
        fout.write(archdata.read())
        fout.close()
        os.rename('m.gz',h+'.gz')
выдает следующее:
b'wmo_id=37031\n&f_ed0=04&f_ed1=08&f_ed2=2013&f_ed3=1&f_ed4=0&f_ed5=0&f_ed6=09&f_ed7=08&f_ed8=2013&f_pe=1&f_pe1=1&lng_id=2'
Traceback (most recent call last):
  File "C:/Python32/d", line 24, in <module>
    with urllib.request.urlopen(arch) as archdata,open('m.gz', 'wb') as fout:
  File "C:\Python32\lib\urllib\request.py", line 138, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python32\lib\urllib\request.py", line 351, in open
    req = Request(fullurl, data)
  File "C:\Python32\lib\urllib\request.py", line 194, in __init__
    self._parse()
  File "C:\Python32\lib\urllib\request.py", line 199, in _parse
    raise ValueError("unknown url type: %s" % self.full_url)
ValueError: unknown url type: ../objects/files.from.archive/37/37031.04.08.2013.09.08.2013.1.0.0.ru.ansi.00000000.csv.gz

Отредактировано Stepe (Сен. 10, 2013 08:37:27)

Офлайн

#8 Сен. 9, 2013 21:35:02

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

Ану-ка дайте ка файл с названиями для будущих файлов…
Еще бы знать, что такое a, b, c, a1, b1, c1 - было бы вообще шикарно.
А пока пишет ошибку url :)



Отредактировано 4kpt (Сен. 9, 2013 21:53:46)

Офлайн

#9 Сен. 10, 2013 07:40:35

Stepe
Зарегистрирован: 2013-09-03
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

А он ошибку урла выдает потому что
b'wmo_id=37031\n&f_ed0=04&f_ed1=08&f_ed2=2013&f_ed3=1&f_ed4=0&f_ed5=0&f_ed6=09&f_ed7=08&f_ed8=2013&f_pe=1&f_pe1=1&lng_id=2'

там стоит символ переноса строки!
Вот надо поидее от него как то избавиться!
а файл в таком виде : обычный текстовый файл

37031
22550
27612
27459

это коды регионов, которе подставляются в wmo_id и они же должны быть названием файлов
Вроде самое сложное уже написал, а как это сделать не понимаю

Офлайн

#10 Сен. 10, 2013 08:02:57

Stepe
Зарегистрирован: 2013-09-03
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

В название файла передать значение переменной

a,b,c,a1,b1,c1 - это даты за который нужно получить архив m - это код региона что бы получить архив

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version