Решено Как создать файл в нужной папке?

Sproot

Green Team
12.08.2017
188
90
BIT
1
Python только начал потихоньку осваивать и столкнулся с проблемой которую даже правильно загуглить не могу потому что не знаю как спросить.
В общем суть такова :
Копирую txt файл , даю ему новое имя из переменной которая вводится через input() , далее заменяю в файле несколько слов опять же на переменные из ввода input()
потом мне нужно чтоб этот файл сохранился в папке которую я выберу , то есть при формировании файла нужно как то сделать выбор папки и после выбора файл сохранялся в выбранной папке.
для большего понимания вот то что я уже сделал
import shutil
import re

name = input("имя файла: ")
title = input("название: ")


shutil.copyfile(r'python/file.txt' , r'python/' + name + '.txt')





with open('python/' + name + '.txt') as f:
s = f.read()
s = s.replace('титл', title)
with open('python/' + name + '.txt', 'w') as f:
f.write(s)



f.close()
ткните хотя бы где искать что ли
зараннее благодарен
 

Tayrus

Red Team
13.04.2017
365
787
BIT
6
Вот тут ты задаешь где записывать файл
Код:
with open('python/' + name + '.txt', 'w') as f:
где python/folder1/ <- путь вот так построить можно(для примера)
Еще пример with open('C:\\Program Files\\python\\' + name + '.txt') as f: <- запишет .txt файл в C:\Program Files\python\
 
  • Нравится
Реакции: N1GGA, IioS и kot-gor

MLNK

Mod. Ethical Hacking
Red Team
23.01.2018
560
706
BIT
7
Вот тут ты задаешь где записывать файл
Код:
with open('python/' + name + '.txt', 'w') as f:
где python/folder1/ <- путь вот так построить можно(для примера)
Еще пример with open('C:\\Program Files\\python\\' + name + '.txt') as f: <- запишет .txt файл в C:\Program Files\python\
я хочу тебя огорчить но чехословакии не существует с 1993 года (((
 

Sproot

Green Team
12.08.2017
188
90
BIT
1
Вот тут ты задаешь где записывать файл
Код:
with open('python/' + name + '.txt', 'w') as f:
где python/folder1/ <- путь вот так построить можно(для примера)
Еще пример with open('C:\\Program Files\\python\\' + name + '.txt') as f: <- запишет .txt файл в C:\Program Files\python\
ну прописать путь куда записать это то я разобрался
наверно немного не ясно описал суть
например есть три папки folder1, folder2 и folder3
нужно как то сделать чтоб был выбор в какую папку записывать и после того как сделал выбор файл записывался в выбранную папку
 

Tayrus

Red Team
13.04.2017
365
787
BIT
6
ну прописать путь куда записать это то я разобрался
наверно немного не ясно описал суть
например есть три папки folder1, folder2 и folder3
нужно как то сделать чтоб был выбор в какую папку записывать и после того как сделал выбор файл записывался в выбранную папку
Если правильно понял то как-то так:
Код:
import shutil
import re

name = input("имя файла: ")
title = input("название: ")

shutil.copyfile(r'python/file.txt' , r'python/' + name + '.txt')

with open('python/' + name + '.txt') as f:
    s = f.read()
    s = s.replace('титл', title)


print ('1 - folder1')
print ('2 - folder2')
print ('3 - folder3')

sel = input('Куда будем сохранять?')

if sel == 1:
    sel = 'folder1\\'

if sel == 2:
    sel = 'folder2\\'

if sel == 3:
    sel = 'folder3\\'

with open(sel + name + '.txt', 'w') as f:
    f.write(s)



f.close()
 
  • Нравится
Реакции: Dinsen и IioS

Sproot

Green Team
12.08.2017
188
90
BIT
1
Если правильно понял то как-то так:
Код:
import shutil
import re

name = input("имя файла: ")
title = input("название: ")

shutil.copyfile(r'python/file.txt' , r'python/' + name + '.txt')

with open('python/' + name + '.txt') as f:
    s = f.read()
    s = s.replace('титл', title)


print ('1 - folder1')
print ('2 - folder2')
print ('3 - folder3')

sel = input('Куда будем сохранять?')

if sel == 1:
    sel = 'folder1\\'

if sel == 2:
    sel = 'folder2\\'

if sel == 3:
    sel = 'folder3\\'

with open(sel + name + '.txt', 'w') as f:
    f.write(s)



f.close()
благодарствую конечно, но сохраняет всё равно в корневой папке
предполагаю что дело может в этом:
Код:
shutil.copyfile(r'python/file.php' , r'python/' + name + '.php')
ведь там явно указано куда сохранять
 

Sproot

Green Team
12.08.2017
188
90
BIT
1
Я не особо пойму что тебе надо
shutil.copyfile() <- Это копирует файл.
Попробуй его ниже закинуть под выбор папки.
Также не пойму зачем тебе re.
закинул ниже всё равно сохраняет в корень
да мне и нужно копировать файл, назвать его по другому, изменить некоторые слова и поместить в папку из выбора
re как я понял нужен чтоб заменить слова в файле
 
A

Anatoly

Может я чего то не понимаю, но в
sel = input('Куда будем сохранять?')
input() вернет в sel строку:: "1" | "2" | "3"
и во всех дальнейших if строка будет сравниваться с числами 1, 2, 3
то есть не сработает ни один if и sel так и останется первоначально введенным символом.

И, да:
import re - лишнее, ты регулярками не пользуешься. Метод .replace немного из другой оперы.
f.close() - лишнее при использовании with open() as f. Так как f существует только в рамках блока with и по его окончании файл будет закрыт автоматически.
 
Последнее редактирование модератором:

Sproot

Green Team
12.08.2017
188
90
BIT
1
Может я чего то не понимаю, но в
sel = input('Куда будем сохранять?')
input() вернет в sel строку:: "1" | "2" | "3"
и во всех дальнейших if строка будет сравниваться с числами 1, 2, 3
то есть не сработает ни один if и sel так и останется первоначально введенным символом.
вот вот , не срабатывает этот способ
И, да:
import re - лишнее, ты регулярками не пользуешься. Метод .replace немного из другой оперы.
f.close() - лишнее при использовании with open() as f. Так как f существует только в рамках блока with и по его окончании файл будет закрыт автоматически.
спасибо за совет
 

Tayrus

Red Team
13.04.2017
365
787
BIT
6
Может я чего то не понимаю, но в
sel = input('Куда будем сохранять?')
input() вернет в sel строку:: "1" | "2" | "3"
и во всех дальнейших if строка будет сравниваться с числами 1, 2, 3
то есть не сработает ни один if и sel так и останется первоначально введенным символом.

И, да:
import re - лишнее, ты регулярками не пользуешься. Метод .replace немного из другой оперы.
f.close() - лишнее при использовании with open() as f. Так как f существует только в рамках блока with и по его окончании файл будет закрыт автоматически.
Смотря какой тип input возвращает, в python2 int тип, поэтому работать будет, в python3 не знаю какой тип, но можно посмотреть print(type(sel)) если будет str, то измените так:
Код:
if sel == '1':
    sel = 'folder1\\'

if sel == '2':
    sel = 'folder2\\'

if sel == '3':
    sel = 'folder3\\'
 
A

Anatoly

Смотря какой тип input возвращает, в python2 int тип
Судя по "Python только начал потихоньку осваивать " вряд ли речь шла о python2... :)
А в python3, при желании получить ввод в виде int и наличии уверенности что пользователь ничего другого и не введет, можно написать:
sel = int(input())
 

Sproot

Green Team
12.08.2017
188
90
BIT
1
Судя по "Python только начал потихоньку осваивать " вряд ли речь шла о python2... :)
так и есть )
А в python3, при желании получить ввод в виде int и наличии уверенности что пользователь ничего другого и не введет, можно написать:
sel = int(input())
никто кроме меня там ничего не введёт
а куда sel = int(input()) впихнуть то? не пойму что то
 
A

Anatoly

Вместо
sel = input('Куда будем сохранять?')
Сделай
sel = int(input('Куда будем сохранять?'))
В переменной sel будет int и ее можно спокойно сравнивать с 1, 2, 3.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!