Suppose from index.py
with CGI, I have post file foo.fasta
to display file. I want to change foo.fasta
‘s file extension to be foo.aln
in display file. How can I do it?
cs95
362k92 gold badges671 silver badges726 bronze badges
asked May 24, 2010 at 20:19
1
An elegant way using pathlib.Path:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
answered Nov 28, 2017 at 9:42
Nikita MalyavinNikita Malyavin
1,7691 gold badge11 silver badges10 bronze badges
4
os.path.splitext()
, os.rename()
for example:
# renamee is the file getting renamed, pre is the part of file name before extension and ext is current extension
pre, ext = os.path.splitext(renamee)
os.rename(renamee, pre + new_extension)
answered May 24, 2010 at 20:23
5
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Where thisFile = the absolute path of the file you are changing
amarillion
24.1k15 gold badges67 silver badges80 bronze badges
answered Sep 9, 2011 at 14:14
FryDayFryDay
1,0471 gold badge7 silver badges10 bronze badges
2
Use this:
os.path.splitext("name.fasta")[0]+".aln"
And here is how the above works:
The splitext method separates the name from the extension creating a tuple:
os.path.splitext("name.fasta")
the created tuple now contains the strings «name» and «fasta».
Then you need to access only the string «name» which is the first element of the tuple:
os.path.splitext("name.fasta")[0]
And then you want to add a new extension to that name:
os.path.splitext("name.fasta")[0]+".aln"
answered Feb 11, 2015 at 15:02
multigoodversemultigoodverse
7,28817 gold badges61 silver badges103 bronze badges
As AnaPana mentioned pathlib is more new and easier in python 3.4 and there is new with_suffix method that can handle this problem easily:
from pathlib import Path
new_filename = Path(mysequence.fasta).with_suffix('.aln')
answered May 13, 2020 at 10:23
Using pathlib and preserving full path:
from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')
answered Aug 20, 2018 at 18:13
PollPennPollPenn
7031 gold badge7 silver badges17 bronze badges
1
Sadly, I experienced a case of multiple dots on file name that splittext does not worked well… my work around:
file = r'C:Docsfile.2020.1.1.xls'
ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
filefinal = file.replace(ext,'')
filefinal = file + '.zip'
os.rename(file ,filefinal)
answered Aug 4, 2020 at 13:16
Hugo VaresHugo Vares
8977 silver badges7 bronze badges
>> file = r'C:Docsfile.2020.1.1.xls'
>> ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
>> filefinal = file.replace(ext,'.zip')
>> os.rename(file ,filefinal)
Bad logic for repeating extension, sample: ‘C:Docs.xls_aaa.xls.xls’
answered Aug 10, 2020 at 23:20
uDevuDev
213 bronze badges
Suppose from index.py
with CGI, I have post file foo.fasta
to display file. I want to change foo.fasta
‘s file extension to be foo.aln
in display file. How can I do it?
cs95
362k92 gold badges671 silver badges726 bronze badges
asked May 24, 2010 at 20:19
1
An elegant way using pathlib.Path:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
answered Nov 28, 2017 at 9:42
Nikita MalyavinNikita Malyavin
1,7691 gold badge11 silver badges10 bronze badges
4
os.path.splitext()
, os.rename()
for example:
# renamee is the file getting renamed, pre is the part of file name before extension and ext is current extension
pre, ext = os.path.splitext(renamee)
os.rename(renamee, pre + new_extension)
answered May 24, 2010 at 20:23
5
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Where thisFile = the absolute path of the file you are changing
amarillion
24.1k15 gold badges67 silver badges80 bronze badges
answered Sep 9, 2011 at 14:14
FryDayFryDay
1,0471 gold badge7 silver badges10 bronze badges
2
Use this:
os.path.splitext("name.fasta")[0]+".aln"
And here is how the above works:
The splitext method separates the name from the extension creating a tuple:
os.path.splitext("name.fasta")
the created tuple now contains the strings «name» and «fasta».
Then you need to access only the string «name» which is the first element of the tuple:
os.path.splitext("name.fasta")[0]
And then you want to add a new extension to that name:
os.path.splitext("name.fasta")[0]+".aln"
answered Feb 11, 2015 at 15:02
multigoodversemultigoodverse
7,28817 gold badges61 silver badges103 bronze badges
As AnaPana mentioned pathlib is more new and easier in python 3.4 and there is new with_suffix method that can handle this problem easily:
from pathlib import Path
new_filename = Path(mysequence.fasta).with_suffix('.aln')
answered May 13, 2020 at 10:23
Using pathlib and preserving full path:
from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')
answered Aug 20, 2018 at 18:13
PollPennPollPenn
7031 gold badge7 silver badges17 bronze badges
1
Sadly, I experienced a case of multiple dots on file name that splittext does not worked well… my work around:
file = r'C:Docsfile.2020.1.1.xls'
ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
filefinal = file.replace(ext,'')
filefinal = file + '.zip'
os.rename(file ,filefinal)
answered Aug 4, 2020 at 13:16
Hugo VaresHugo Vares
8977 silver badges7 bronze badges
>> file = r'C:Docsfile.2020.1.1.xls'
>> ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
>> filefinal = file.replace(ext,'.zip')
>> os.rename(file ,filefinal)
Bad logic for repeating extension, sample: ‘C:Docs.xls_aaa.xls.xls’
answered Aug 10, 2020 at 23:20
uDevuDev
213 bronze badges
Suppose from index.py
with CGI, I have post file foo.fasta
to display file. I want to change foo.fasta
‘s file extension to be foo.aln
in display file. How can I do it?
cs95
362k92 gold badges671 silver badges726 bronze badges
asked May 24, 2010 at 20:19
1
An elegant way using pathlib.Path:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
answered Nov 28, 2017 at 9:42
Nikita MalyavinNikita Malyavin
1,7691 gold badge11 silver badges10 bronze badges
4
os.path.splitext()
, os.rename()
for example:
# renamee is the file getting renamed, pre is the part of file name before extension and ext is current extension
pre, ext = os.path.splitext(renamee)
os.rename(renamee, pre + new_extension)
answered May 24, 2010 at 20:23
5
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Where thisFile = the absolute path of the file you are changing
amarillion
24.1k15 gold badges67 silver badges80 bronze badges
answered Sep 9, 2011 at 14:14
FryDayFryDay
1,0471 gold badge7 silver badges10 bronze badges
2
Use this:
os.path.splitext("name.fasta")[0]+".aln"
And here is how the above works:
The splitext method separates the name from the extension creating a tuple:
os.path.splitext("name.fasta")
the created tuple now contains the strings «name» and «fasta».
Then you need to access only the string «name» which is the first element of the tuple:
os.path.splitext("name.fasta")[0]
And then you want to add a new extension to that name:
os.path.splitext("name.fasta")[0]+".aln"
answered Feb 11, 2015 at 15:02
multigoodversemultigoodverse
7,28817 gold badges61 silver badges103 bronze badges
As AnaPana mentioned pathlib is more new and easier in python 3.4 and there is new with_suffix method that can handle this problem easily:
from pathlib import Path
new_filename = Path(mysequence.fasta).with_suffix('.aln')
answered May 13, 2020 at 10:23
Using pathlib and preserving full path:
from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')
answered Aug 20, 2018 at 18:13
PollPennPollPenn
7031 gold badge7 silver badges17 bronze badges
1
Sadly, I experienced a case of multiple dots on file name that splittext does not worked well… my work around:
file = r'C:Docsfile.2020.1.1.xls'
ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
filefinal = file.replace(ext,'')
filefinal = file + '.zip'
os.rename(file ,filefinal)
answered Aug 4, 2020 at 13:16
Hugo VaresHugo Vares
8977 silver badges7 bronze badges
>> file = r'C:Docsfile.2020.1.1.xls'
>> ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
>> filefinal = file.replace(ext,'.zip')
>> os.rename(file ,filefinal)
Bad logic for repeating extension, sample: ‘C:Docs.xls_aaa.xls.xls’
answered Aug 10, 2020 at 23:20
uDevuDev
213 bronze badges
-
Общие вопросы о библиотеке
- Как найти модуль или приложение для выполнения задачи X?
- Где находится исходный файл math.py (socket.py,regex.py и т.д.)?
- Как сделать скрипт Python исполняемым на Unix?
- Существует ли пакет curses/termcap для Python?
- Есть ли в Python эквивалент onexit()языка C?
- Почему мои обработчики сигналов не работают?
-
Common tasks
- Как протестировать программу или компонент Python?
- Как создать документацию из строк doc?
- Как получить одно нажатие клавиши за один раз?
-
Threads
- Как программировать с использованием потоков?
- Ни один из моих потоков не запускается:почему?
- Как распределить работу между несколькими рабочими потоками?
- Какие виды мутации глобальных значений безопасны для потоков?
- Разве мы не можем избавиться от блокировки глобального переводчика?
-
Вход и выход
- Как удалить файл? (И другие вопросы о файлах…)
- Как скопировать файл?
- Как читать (или записывать)двоичные данные?
- Я не могу использовать os.read()на трубе,созданной с помощью os.popen();почему?
- Как получить доступ к последовательному порту (RS232)?
- Почему закрытие sys.stdout (stdin,stderr)на самом деле не закрывает его?
-
Network/Internet Programming
- Какие инструменты WWW существуют для Python?
- Как я могу имитировать отправку формы CGI (METHOD=POST)?
- Какой модуль следует использовать для помощи в генерации HTML?
- Как отправить почту из сценария Python?
- Как избежать блокировки в методе connect()сокета?
-
Databases
- Есть ли в Python интерфейсы к пакетам баз данных?
- Как реализовать постоянные объекты в Python?
-
Математика и числительные
- Как генерировать случайные числа в Python?
Общие вопросы о библиотеке
Как найти модуль или приложение для выполнения задачи X?
Проверьте Справочник по библиотеке , чтобы узнать, есть ли соответствующий модуль стандартной библиотеки. (В конце концов вы узнаете, что есть в стандартной библиотеке, и сможете пропустить этот шаг.)
Для сторонних пакетов выполните поиск в индексе пакетов Python или попробуйте Google или другую поисковую систему. Поиск «Python» плюс ключевое слово или два для интересующей вас темы обычно находит что-то полезное.
Где находится исходный файл math.py (socket.py,regex.py и т.д.)?
Если вы не можете найти исходный файл для модуля, это может быть встроенный или динамически загружаемый модуль, реализованный на C, C++ или другом скомпилированном языке. В этом случае у вас может не быть исходного файла или это может быть что-то вроде mathmodule.c
где- то в исходном каталоге C (не на пути Python).
В Python существует (по крайней мере)три вида модулей:
- модули,написанные на языке Python (.py);
- модули,написанные на языке C и динамически загружаемые (.dll,.pyd,.so,.sl и т.д.);
-
модули,написанные на языке C и связанные с интерпретатором;чтобы получить их список,введите:
import sys print(sys.builtin_module_names)
Как сделать скрипт Python исполняемым на Unix?
Вам нужно сделать две вещи: режим файла сценария должен быть исполняемым, а первая строка должна начинаться с #!
за которым следует путь интерпретатора Python.
Первый выполняется путем выполнения chmod +x scriptfile
или, возможно, файла сценария chmod 755 scriptfile
.
Второе можно сделать несколькими способами.Самый простой способ-написать
#!/usr/local/bin/python
в качестве первой строки вашего файла,используя имя пути к месту установки интерпретатора Python на вашей платформе.
Если вы хотите, чтобы скрипт не зависел от того, где находится интерпретатор Python, вы можете использовать программу env . Почти все варианты Unix поддерживают следующее, предполагая, что интерпретатор Python находится в каталоге пользователя PATH
:
#!/usr/bin/env python
Не делайте этого для сценариев CGI. Переменная PATH
для сценариев CGI часто очень минимальна, поэтому вам нужно использовать фактический абсолютный путь интерпретатора.
Иногда среда пользователя настолько заполнена, что программа /usr/bin/env дает сбой; или вообще нет программы env. В этом случае вы можете попробовать следующий лайфхак (благодаря Alex Rezinsky):
#! /bin/sh """:" exec python $0 ${1+"$@"} """
Небольшим недостатком является то,что это определяет строку __doc__скрипта.Однако это можно исправить,добавив
__doc__ = """...Whatever..."""
Существует ли пакет curses/termcap для Python?
Для вариантов Unix: Стандартный исходный код Python поставляется с модулем curses в подкаталоге Modules , хотя по умолчанию он не скомпилирован. (Обратите внимание, что это недоступно в дистрибутиве Windows — для Windows нет модуля curses.)
Модуль curses
поддерживает основные функции curses, а также множество дополнительных функций из ncurses и SYSV curses, таких как цвет, поддержка альтернативного набора символов, пэды и поддержка мыши. Это означает, что модуль не совместим с операционными системами, имеющими только проклятия BSD, но, похоже, в настоящее время нет поддерживаемых операционных систем, подпадающих под эту категорию.
Есть ли в Python эквивалент onexit()языка C?
Модуль atexit
предоставляет функцию регистрации, аналогичную функции onexit()
языка C.
Почему мои обработчики сигналов не работают?
Наиболее распространенная проблема заключается в том,что обработчик сигналов объявляется с неправильным списком аргументов.Он вызывается как
handler(signum, frame)
поэтому он должен быть объявлен с двумя параметрами:
def handler(signum, frame): ...
Common tasks
Как протестировать программу или компонент Python?
Python поставляется с двумя средами тестирования. Модуль doctest
находит примеры в строках документации для модуля и запускает их, сравнивая вывод с ожидаемым выводом, указанным в строке документации.
Модуль unittest
— это более изящная среда тестирования, созданная по образцу сред тестирования Java и Smalltalk.
Чтобы облегчить тестирование,вы должны использовать в своей программе хороший модульный дизайн.В вашей программе почти вся функциональность должна быть заключена в функции или методы класса-и это иногда имеет удивительный и восхитительный эффект,заставляя программу работать быстрее (потому что доступ к локальным переменным быстрее,чем к глобальным).Кроме того,программа не должна зависеть от мутирующих глобальных переменных,поскольку это значительно усложняет тестирование.
Глобальная основная логика» вашей программы может быть такой простой,как
if __name__ == "__main__": main_logic()
в нижней части главного модуля вашей программы.
После того,как ваша программа организована как поддающаяся обработке коллекция функций и поведений классов,вы должны написать тестовые функции,которые выполняют эти поведения.С каждым модулем может быть связан набор тестов,автоматизирующий последовательность тестов.Это звучит как большой объем работы,но поскольку Python настолько лаконичен и гибок,это удивительно просто.Вы можете сделать кодирование гораздо более приятным и увлекательным,если будете писать свои тестовые функции параллельно с «производственным кодом»,поскольку это облегчает поиск ошибок и даже недостатков дизайна на ранних этапах.
«Вспомогательные модули»,которые не предназначены для того,чтобы быть основным модулем программы,могут включать самотестирование модуля.
if __name__ == "__main__": self_test()
Даже программы,взаимодействующие со сложными внешними интерфейсами,можно тестировать,когда внешние интерфейсы недоступны,используя «фальшивые» интерфейсы,реализованные в Python.
Как создать документацию из строк doc?
Модуль pydoc
может создавать HTML из строк документа в исходном коде Python. Альтернативой для создания документации API исключительно из строк документации является epydoc . Sphinx также может включать содержимое строки документации.
Как получить одно нажатие клавиши за один раз?
Для вариантов Unix существует несколько решений.Это легко сделать с помощью curses,но curses-довольно большой модуль,который нужно изучить.
Threads
Как программировать с использованием потоков?
Обязательно используйте модуль threading
передачи, а не модуль _thread
. Модуль threading
передачи строит удобные абстракции на основе низкоуровневых примитивов, предоставляемых модулем _thread
.
Ни один из моих потоков не запускается:почему?
Как только главный поток завершается,все потоки погибают.Ваш главный поток выполняется слишком быстро,не давая потокам времени на выполнение какой-либо работы.
Простое решение-добавить в конец программы sleep,который будет достаточно длинным для завершения всех потоков:
import threading, time def thread_task(name, n): for i in range(n): print(name, i) for i in range(10): T = threading.Thread(target=thread_task, args=(str(i), i)) T.start() time.sleep(10) # <---------------------------!
Но теперь (на многих платформах)потоки не выполняются параллельно,а,похоже,выполняются последовательно,один за другим! Причина в том,что планировщик потоков ОС не запускает новый поток,пока предыдущий поток не будет заблокирован.
Простым исправлением является добавление крошечного сна в начало функции run:
def thread_task(name, n): time.sleep(0.001) # <--------------------! for i in range(n): print(name, i) for i in range(10): T = threading.Thread(target=thread_task, args=(str(i), i)) T.start() time.sleep(10)
Вместо того, чтобы пытаться угадать хорошее значение задержки для time.sleep()
, лучше использовать какой-то механизм семафора. Одна из идей состоит в том, чтобы использовать модуль queue
для создания объекта очереди, позволяя каждому потоку добавлять маркер в очередь по завершении и позволять основному потоку считывать из очереди столько маркеров, сколько существует потоков.
Как распределить работу между несколькими рабочими потоками?
Самый простой способ — использовать модуль concurrent.futures
, особенно класс ThreadPoolExecutor
.
Или, если вам нужен точный контроль над алгоритмом диспетчеризации, вы можете написать свою собственную логику вручную. Используйте модуль queue
, чтобы создать очередь, содержащую список заданий. Класс Queue
поддерживает список объектов и имеет .put(obj)
, который добавляет элементы в очередь, и метод .get()
для их возврата. Класс позаботится о блокировке, необходимой для того, чтобы каждое задание было выдано ровно один раз.
Вот тривиальный пример:
import threading, queue, time def worker(): print('Running worker') time.sleep(0.1) while True: try: arg = q.get(block=False) except queue.Empty: print('Worker', threading.current_thread(), end=' ') print('queue empty') break else: print('Worker', threading.current_thread(), end=' ') print('running with argument', arg) time.sleep(0.5) q = queue.Queue() for i in range(5): t = threading.Thread(target=worker, name='worker %i' % (i+1)) t.start() for i in range(50): q.put(i) print('Main thread sleeping') time.sleep(5)
При запуске будет получен следующий результат:
Running worker Running worker Running worker Running worker Running worker Main thread sleeping Worker <Thread(worker 1, started 130283832797456)> running with argument 0 Worker <Thread(worker 2, started 130283824404752)> running with argument 1 Worker <Thread(worker 3, started 130283816012048)> running with argument 2 Worker <Thread(worker 4, started 130283807619344)> running with argument 3 Worker <Thread(worker 5, started 130283799226640)> running with argument 4 Worker <Thread(worker 1, started 130283832797456)> running with argument 5 ...
Обратитесь к документации модуля для более подробной информации; класс Queue
предоставляет многофункциональный интерфейс.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/faq/library.html
Python
3.11
-
Часто задаваемые вопросы по Python
Python Часто задаваемые вопросы Общие вопросы FAQ Программирование Дизайн и история библиотеки Расширение/встраивание Windows Графический интерфейс пользователя «Почему
-
«Почему на моем компьютере установлен Python?» Вопросы-Ответы
Python-это язык программирования.
-
Какие виды мутации глобальных значений безопасны для потоков?
Глобальная блокировка интерпретатора (GIL)используется внутри программы,чтобы гарантировать,что только один поток запускает Python VM time.
-
Programming FAQ
Общие вопросы Основной язык Числа и строки Выполнение Последовательности (кортежи/списки)Объекты Модули Да.
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
1 |
|
09.05.2021, 11:38. Показов 18206. Ответов 29
Делаю из txt в py ,но тхт все равно остается
__________________
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
09.05.2021, 11:38 |
29 |
Автоматизируй это! 6482 / 4175 / 1140 Регистрация: 30.03.2015 Сообщений: 12,333 Записей в блоге: 29 |
|
09.05.2021, 11:39 |
2 |
Aker05, теперь то же самое на русском, чтобы было понятно тем, кто не владеет телепатией
1 |
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
09.05.2021, 11:40 [ТС] |
3 |
есть у меня текстовый документ с кодом, изменяю его с .txt на .py ,но после этих действий он все равно остается текстовым документом c форматом .txt
0 |
Автоматизируй это! 6482 / 4175 / 1140 Регистрация: 30.03.2015 Сообщений: 12,333 Записей в блоге: 29 |
|
09.05.2021, 11:42 |
4 |
Aker05, значит как то не так переименовываешь. Используй какой нибудь нотепад++ или пичарм. А еще лучше скопируй содержимое и вставь в файл пи.
1 |
Нарушитель 14047 / 8235 / 2485 Регистрация: 21.10.2017 Сообщений: 19,711 |
|
09.05.2021, 11:43 |
5 |
Welemir1, вангую, добавляет расшиерение .py к.txt-файлу, в винде со скрытыми зарегистрированными расширениями.
2 |
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
09.05.2021, 11:52 [ТС] |
6 |
не получается , просто белый ярлык получается и когда открываешь предлогает открыть через блокнот или же что-то другое ,но только не командную строка Добавлено через 37 секунд
0 |
Нарушитель 14047 / 8235 / 2485 Регистрация: 21.10.2017 Сообщений: 19,711 |
|
09.05.2021, 11:52 |
7 |
Aker05, ебстественно. Винде нужно сказать — чем открывать файл .py
0 |
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
09.05.2021, 11:53 [ТС] |
8 |
ну откроется он, а работать ведь не будет
0 |
Автоматизируй это! 6482 / 4175 / 1140 Регистрация: 30.03.2015 Сообщений: 12,333 Записей в блоге: 29 |
|
09.05.2021, 11:55 |
9 |
Aker05, а если почитать как запускать питон файлы? установить ИДЕ?
0 |
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
09.05.2021, 11:59 [ТС] |
10 |
через идле сделал чтоб слово выводилось просто, сохраняю на рабочий стол и опять в блокнот превращается………
0 |
Нарушитель 14047 / 8235 / 2485 Регистрация: 21.10.2017 Сообщений: 19,711 |
|
09.05.2021, 12:00 |
11 |
Aker05, давай-ка по пунктам — чего ты хочешь добиться?
0 |
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
09.05.2021, 12:05 [ТС] |
12 |
я хочу сделать файл с расширением .py ,но у меня это не получается т.к после того как я переименовываю .txt в .py или же сохраняю код с любых редакторов(например с sublime) на рабочий стол , то у меня на файле не ярлых питона(самого расширение питона тоже нет на файле) ,а ярлык блокнота и когда я захожу в этот файл, то открывается у меня тоже просто блокнот
0 |
Нарушитель 14047 / 8235 / 2485 Регистрация: 21.10.2017 Сообщений: 19,711 |
|
09.05.2021, 12:06 |
13 |
Переименуй тотал коммандером. Он показывает зарегистрированные расширения
0 |
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
09.05.2021, 12:07 [ТС] |
14 |
откуда скачать посоветуешь?
0 |
Нарушитель 14047 / 8235 / 2485 Регистрация: 21.10.2017 Сообщений: 19,711 |
|
09.05.2021, 12:09 |
15 |
В гугле забанили?
0 |
Автоматизируй это! 6482 / 4175 / 1140 Регистрация: 30.03.2015 Сообщений: 12,333 Записей в блоге: 29 |
|
09.05.2021, 12:09 |
16 |
Aker05, не используй всякую ерунду типа идле или сублиме, установи PyCharm
1 |
Нарушитель 14047 / 8235 / 2485 Регистрация: 21.10.2017 Сообщений: 19,711 |
|
09.05.2021, 12:11 |
17 |
Welemir1, вангую, что питон в пат не прописан. Иначе винда зарегистрировала бы расширение.
1 |
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
09.05.2021, 12:11 [ТС] |
18 |
он ругается на меня всегда ,я удалил его) и есть ли кряк где то без вирусов на пичарм?
0 |
Нарушитель 14047 / 8235 / 2485 Регистрация: 21.10.2017 Сообщений: 19,711 |
|
09.05.2021, 12:12 |
19 |
Aker05, качай Pycharm Community, он бесплатный
0 |
1 / 1 / 0 Регистрация: 16.12.2020 Сообщений: 62 |
|
09.05.2021, 12:13 [ТС] |
20 |
lite или powerpack? Добавлено через 23 секунды
0 |
Предположим из index.py
с CGI у меня есть почтовый файл foo.fasta
для отображения файла. я хочу изменить foo.fasta
расширение файла должно быть foo.aln
в файле отображения. Как мне это сделать?
9 ответы
os.path.splitext()
, os.rename()
например:
# renamee is the file getting renamed, pre is the part of file name before extension and ext is current extension
pre, ext = os.path.splitext(renamee)
os.rename(renamee, pre + new_extension)
Создан 01 янв.
Элегантный способ использования pathlib.Путь:
from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
Создан 28 ноя.
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")
Где thisFile = абсолютный путь к изменяемому файлу
ответ дан 14 окт ’13, 16:10
Создан 10 фев.
Используйте это:
os.path.splitext("name.fasta")[0]+".aln"
И вот как это работает:
Метод splitext отделяет имя от расширения, создавая кортеж:
os.path.splitext("name.fasta")
созданный кортеж теперь содержит строки name и fasta. Затем вам нужно получить доступ только к строке «name», которая является первым элементом кортежа:
os.path.splitext("name.fasta")[0]
А затем вы хотите добавить к этому имени новое расширение:
os.path.splitext("name.fasta")[0]+".aln"
ответ дан 05 мар ’15, в 20:03
Как упомянула AnaPana, pathlib более новый и более простой в python 3.4, и есть новый метод with_suffix, который может легко справиться с этой проблемой:
from pathlib import Path
new_filename = Path(mysequence.fasta).with_suffix('.aln')
ответ дан 13 мая ’20, 11:05
Использование pathlib и сохранение полного пути:
from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')
ответ дан 20 авг.
К сожалению, я столкнулся с несколькими точками в имени файла, когда разделенный текст не работал хорошо … моя работа:
file = r'C:Docsfile.2020.1.1.xls'
ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
filefinal = file.replace(ext,'')
filefinal = file + '.zip'
os.rename(file ,filefinal)
ответ дан 26 мар ’21, в 13:03
>> file = r'C:Docsfile.2020.1.1.xls'
>> ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
>> filefinal = file.replace(ext,'.zip')
>> os.rename(file ,filefinal)
Плохая логика для повторения расширения, пример: ‘C: Docs .xls_aaa.xls.xls’
ответ дан 11 авг.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
python
rename
file-extension
or задайте свой вопрос.