111

CGIindex.pyを使用して、ファイルを表示するための投稿ファイルがあるfoo.fastaとします。foo.fastaのファイル拡張子を表示ファイルに変更したいfoo.aln。どうすればいいですか?

4

9 に答える 9

104

pathlib.Pathを使用したエレガントな方法:

from pathlib import Path
p = Path('mysequence.fasta')
p.rename(p.with_suffix('.aln'))
于 2017-11-28T09:42:23.477 に答える
86

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)
于 2010-05-24T20:23:44.517 に答える
82
import os
thisFile = "mysequence.fasta"
base = os.path.splitext(thisFile)[0]
os.rename(thisFile, base + ".aln")

ここで、thisFile=変更するファイルの絶対パス

于 2011-09-09T14:14:59.967 に答える
26

Python 3.4以降、pathlib組み込みライブラリがあります。したがって、コードは次のようになります。

from pathlib import Path

filename = "mysequence.fasta"
new_filename = Path(filename).stem + ".aln"

https://docs.python.org/3.4/library/pathlib.html#pathlib.PurePath.stem

私はpathlibが大好きです:)

于 2017-02-10T00:29:45.180 に答える
20

これを使って:

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"
于 2015-02-11T15:02:50.703 に答える
8

AnaPanaが述べたように、pathlibはpython 3.4でより新しく、より簡単になり、この問題を簡単に処理できる新しいwith_suffixメソッドがあります。

from pathlib import Path
new_filename = Path(mysequence.fasta).with_suffix('.aln')
于 2020-05-13T10:23:15.897 に答える
3

pathlibの使用とフルパスの保持:

from pathlib import Path
p = Path('/User/my/path')
new_p = Path(p.parent.as_posix() + '/' + p.stem + '.aln')
于 2018-08-20T18:13:03.993 に答える
3

悲しいことに、ファイル名に複数のドットがあり、splittextがうまく機能しないというケースが発生しました...私の回避策:

file = r'C:\Docs\file.2020.1.1.xls'
ext = '.'+ os.path.realpath(file).split('.')[-1:][0]
filefinal = file.replace(ext,'')
filefinal = file + '.zip'
os.rename(file ,filefinal)
于 2020-08-04T13:16:20.180 に答える
1
>> file = r'C:\Docs\file.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'

于 2020-08-10T23:20:54.283 に答える