Как наиболее элегантно имея полный путь к файлу, изменить имя самого файла.
Например, дана строка ‘/home/vasya/test/test.txt’, а нужно ‘/home/vasya/test/re_test.txt’
И ещё. Почему
os.path.join(os.path.split('/home/vasya/test/test.txt'))
os.path.join(os.path.split('/home/vasya/test/test.txt'))
UsCr
Как наиболее элегантно имея полный путь к файлу, изменить имя самого файла.
Например, дана строка ‘/home/vasya/test/test.txt’, а нужно ‘/home/vasya/test/re_test.txt’
os.rename('/home/vasya/test/test.txt','/home/vasya/test/re_test.txt')
UsCrПотому, что вы передаете только один аргумент, который является листом. А синтаксис, на самом деле, вот такой:
И ещё. Почему
Код:
os.path.join(os.path.split('/home/vasya/test/test.txt'))
Возвращает ('/home/vasya/test', ‘test.txt’), а не /home/vasya/test/test.txt?
os.path.join(path1[, path2[, ...]])
bwНет. я заранее не знаю какое имя файла получу. Мне нужно именно добавить “re_” в имя.
os.path.join(os.path.dirname('/home/vasya/test/test.txt'), ‘re_test.txt’)
os.path.join(os.path.split(path)[0] , "re_"+os.path.split(path)[1])
os.path.join(os.path.dirname(path), 're_'+os.path.basename(path))
>>> s = "/home/vasya/test/test.txt"
>>> s = "/re_".join(s.rsplit('/', 1))
>>> s
'/home/vasya/test/re_test.txt'
>>>
>>> s = "/home/vasya/test/test.txt"
>>> s = s.rsplit('/', 1)[0] + '/' + 're_' + s.rsplit('/', 1)[-1]
>>> s
'/home/vasya/test/re_test.txt'
>>>
s = s.rsplit('/', 1)[0] + '/' + 're_' + s.rsplit('/', 1)[-1]
os.path.join(os.path.dirname(path), 're_'+os.path.basename(path))
>>> def func(path, prefix="", sep='/'):
... return ("%s%s" % (sep, prefix)).join(path.rsplit(sep, 1))