回答:
拡張子なしのファイル名を取得する:
import os
print(os.path.splitext("/path/to/some/file.txt")[0])
プリント:
/path/to/some/file
重要な注意:ファイル名に複数のドットがある場合、最後のドットの後の拡張子のみが削除されます。例えば:
import os
print(os.path.splitext("/path/to/some/file.txt.zip.asc")[0])
プリント:
/path/to/some/file.txt.zip
そのケースを処理する必要がある場合は、以下の他の回答を参照してください。
splitext('kitty.jpg.zip')
を与えます('kitty.jpg', '.zip')
)。
splitext(basename('/some/path/to/file.txt'))[0]
(私はいつもそうしているようです)
あなたはあなた自身で作ることができます:
>>> import os
>>> base=os.path.basename('/root/dir/sub/file.ext')
>>> base
'file.ext'
>>> os.path.splitext(base)
('file', '.ext')
>>> os.path.splitext(base)[0]
'file'
重要な注意:.
ファイル名に複数ある場合、最後のファイルのみが削除されます。例えば:
/root/dir/sub/file.ext.zip -> file.ext
/root/dir/sub/file.ext.tar.gz -> file.ext.tar
これに対処する他の回答については、以下を参照してください。
os
ます。
os.path
ソリューションと同様に、これは1つの拡張子のみを削除することに注意してください(またはsuffix
とpathlib
呼びます)。Path('a.b.c').stem == 'a.b'
Path(Path('a.b.c').stem).stem
.with_suffix('')
が良い方法だと思います。あなたはおそらくまでループしたいと思うでしょうp.suffix == ''
。
>>> print(os.path.splitext(os.path.basename("hemanth.txt"))[0])
hemanth
`
コードを表示するために使用し、パスインスタンスとして「/somepath/hermanth.txt」を使用することもできます。
os.path.basename
は、指定する必要がないことに注意してください。os.path.basename
ファイルパスからファイル名を取得するためにのみ使用する必要があります。
https://docs.python.org/3/library/os.path.html
Python 3でpathlib「pathlibモジュールは高レベルのパスオブジェクトを提供します。」そう、
>>> from pathlib import Path
>>> p = Path("/a/b/c.txt")
>>> print(p.with_suffix(''))
\a\b\c
>>> print(p.stem)
c
ファイルへのパスを保持し、拡張子を削除するだけの場合
>>> file = '/root/dir/sub.exten/file.data.1.2.dat'
>>> print ('.').join(file.split('.')[:-1])
/root/dir/sub.exten/file.data.1.2
'/root/dir/sub.exten/file.data.1.2.dat'.rsplit('.', 1)
os.path.splitext()は、拡張子に複数のドットがある場合は機能しません。
たとえば、images.tar.gz
>>> import os
>>> file_path = '/home/dc/images.tar.gz'
>>> file_name = os.path.basename(file_path)
>>> print os.path.splitext(file_name)[0]
images.tar
ベース名の最初のドットのインデックスを見つけ、ベース名をスライスして拡張子なしのファイル名だけを取得できます。
>>> import os
>>> file_path = '/home/dc/images.tar.gz'
>>> file_name = os.path.basename(file_path)
>>> index_of_dot = file_name.index('.')
>>> file_name_without_extension = file_name[:index_of_dot]
>>> print file_name_without_extension
images
'haystack'.index('needle')
haystackに針(上記の場合はドット.
)が見つからない場合は、ValueError例外をスローすることに注意してください。拡張子のないファイルも存在します。
しかし、osをインポートしても、path.basenameとは呼べません。ベース名と同じように直接呼び出すことはできますか?
import os
、次に使用 os.path.basename
import
ing os
は、os.foo
を参照せずに使用できるという意味ではありませんos
。
from os import foo
。
os
と呼ばれるメンバーがいる場合、モジュールの非常に非標準バージョンがありますfoo
。
path
、またはを検討walk
)。
os.path.splitextの使用にバリエーションを投入すると思いました配列のインデックスを使用せずにを。
関数は常に(root, ext)
ペアを返すため、安全に使用できます。
root, ext = os.path.splitext(path)
例:
>>> import os
>>> path = 'my_text_file.txt'
>>> root, ext = os.path.splitext(path)
>>> root
'my_text_file'
>>> ext
'.txt'
他のメソッドは複数の拡張機能を削除しません。一部には、拡張子のないファイル名に関する問題もあります。このスニペットは両方のインスタンスを処理し、Python 2と3の両方で機能します。パスからベース名を取得し、値をドットで分割し、ファイル名の最初の部分である最初の値を返します。
import os
def get_filename_without_extension(file_path):
file_basename = os.path.basename(file_path)
filename_without_extension = file_basename.split('.')[0]
return filename_without_extension
実行する一連の例を次に示します。
example_paths = [
"FileName",
"./FileName",
"../../FileName",
"FileName.txt",
"./FileName.txt.zip.asc",
"/path/to/some/FileName",
"/path/to/some/FileName.txt",
"/path/to/some/FileName.txt.zip.asc"
]
for example_path in example_paths:
print(get_filename_without_extension(example_path))
どの場合でも、出力される値は次のとおりです。
FileName
Path('/path/to/file.txt').stem
。(1,23μsvs8.39μs)
import os
filename = C:\\Users\\Public\\Videos\\Sample Videos\\wildlife.wmv
これは(C:\ Users \ Public \ Videos \ Sample Videos \ wildlife)filename
なしでを返しますextension
temp = os.path.splitext(filename)[0]
今、あなたfilename
は臨時雇用者からちょうど得ることができます
os.path.basename(temp) #this returns just the filename (wildlife)
複数の拡張を認識する手順。パスstr
とのために動作しunicode
ます。Python 2および3で動作します。
import os
def file_base_name(file_name):
if '.' in file_name:
separator_index = file_name.index('.')
base_name = file_name[:separator_index]
return base_name
else:
return file_name
def path_base_name(path):
file_name = os.path.basename(path)
return file_base_name(file_name)
動作:
>>> path_base_name('file')
'file'
>>> path_base_name(u'file')
u'file'
>>> path_base_name('file.txt')
'file'
>>> path_base_name(u'file.txt')
u'file'
>>> path_base_name('file.tar.gz')
'file'
>>> path_base_name('file.a.b.c.d.e.f.g')
'file'
>>> path_base_name('relative/path/file.ext')
'file'
>>> path_base_name('/absolute/path/file.ext')
'file'
>>> path_base_name('Relative\\Windows\\Path\\file.txt')
'file'
>>> path_base_name('C:\\Absolute\\Windows\\Path\\file.txt')
'file'
>>> path_base_name('/path with spaces/file.ext')
'file'
>>> path_base_name('C:\\Windows Path With Spaces\\file.txt')
'file'
>>> path_base_name('some/path/file name with spaces.tar.gz.zip.rar.7z')
'file name with spaces'
import os
path = "a/b/c/abc.txt"
print os.path.splitext(os.path.basename(path))[0]
便宜上、次の2つのメソッドをラップする単純な関数os.path
:
def filename(path):
"""Return file name without extension from path.
See https://docs.python.org/3/library/os.path.html
"""
import os.path
b = os.path.split(path)[1] # path, *filename*
f = os.path.splitext(b)[0] # *file*, ext
#print(path, b, f)
return f
Python 3.5でテスト済み。
これを解決する最も簡単な方法は
import ntpath
print('Base name is ',ntpath.basename('/path/to/the/file/'))
これにより、時間と計算コストを節約できます。
非常に非常に非常に簡単に他のモジュールはありません!!!
import os
p = r"C:\Users\bilal\Documents\face Recognition python\imgs\northon.jpg"
# Get the filename only from the initial file path.
filename = os.path.basename(p)
# Use splitext() to get filename and extension separately.
(file, ext) = os.path.splitext(filename)
# Print outcome.
print("Filename without extension =", file)
print("Extension =", ext)
ここ(https://stackoverflow.com/a/424006/1250044)に示すように、単純なsplit
/ pop
マジックを実行して、ファイル名を抽出することができます(ウィンドウとPOSIXの違いを考慮して)。
def getFileNameWithoutExtension(path):
return path.split('\\').pop().split('/').pop().rsplit('.', 1)[0]
getFileNameWithoutExtension('/path/to/file-0.0.1.ext')
# => file-0.0.1
getFileNameWithoutExtension('\\path\\to\\file-0.0.1.ext')
# => file-0.0.1
import os
list = []
def getFileName( path ):
for file in os.listdir(path):
#print file
try:
base=os.path.basename(file)
splitbase=os.path.splitext(base)
ext = os.path.splitext(base)[1]
if(ext):
list.append(base)
else:
newpath = path+"/"+file
#print path
getFileName(newpath)
except:
pass
return list
getFileName("/home/weexcel-java3/Desktop/backup")
print list
import os filename、file_extension = os.path.splitext( '/ d1 / d2 / example.cs')filename is '/ d1 / d2 / example' file_extension is '.cs'