Найти - Пользователи
Полная версия: В название файла передать значение переменной
Начало » Python для новичков » В название файла передать значение переменной
1 2
Stepe
Добрый день. Долго ищю информацию о том каким образом возможно передать значение переменой в название файла куда будет записываться какой либо результат.
Например
 p = open ("text.txt" , 'r')
for line in text :
    a = b+c
    g = open(line, 'w')
    g.write(a)
     
line - строка в файле, я хочу что бы именно этой срокой назывался файл куда записывается переменная а, как это можно сделать?
lorien
Прочитайте первую строку из файла, используйте эту информацию чтобы построить новое имя файла, далее запишите в файл с новым именем нужные данные.
Stepe
lorien
используйте эту информацию чтобы построить новое имя файла, далее запишите в файл с новым именем нужные данные.
Не понял, можете привести пример?
4kpt
Ваш код:

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
Stepe
Спасибо.
Это просто я привел пример.
Вот фрагмент реального кода, где я хочу изменять название файла :
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.
Как сделать не понимаю
Tisov
Stepe
и собственно хотелось бы что бы здесь open('m.gz', ‘wb’) - название файла было равно m.
m = 'blabla'
f = open('%s.gz' % m, 'wb')
Stepe
Спасибо, а как мне убрать символ перехода на новую строку?
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
4kpt
Ану-ка дайте ка файл с названиями для будущих файлов…
Еще бы знать, что такое a, b, c, a1, b1, c1 - было бы вообще шикарно.
А пока пишет ошибку url :)
Stepe
А он ошибку урла выдает потому что
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 и они же должны быть названием файлов
Вроде самое сложное уже написал, а как это сделать не понимаю
Stepe
a,b,c,a1,b1,c1 - это даты за который нужно получить архив m - это код региона что бы получить архив
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB