Wie erhalte ich den Dateinamen ohne die Erweiterung aus einem Pfad in Python?
"/path/to/some/file.txt" "file"
Wie erhalte ich den Dateinamen ohne die Erweiterung aus einem Pfad in Python?
"/path/to/some/file.txt" "file"
Ich habe die Antworten gelesen, und ich stelle fest, dass es viele gute Lösungen gibt. Also, für diejenigen, die entweder (Name oder Erweiterung), hier geht eine andere Lösung, mit dem Betriebssystem-Modul Beide Methoden unterstützen Dateien mit mehreren Erweiterungen.
import os
def get_file_name(path):
if not os.path.isdir(path):
return os.path.splitext(os.path.basename(path))[0].split(".")[0]
def get_file_extension(path):
extensions = []
copy_path = path
while True:
copy_path, result = os.path.splitext(copy_path)
if result != '':
extensions.append(result)
else:
break
extensions.reverse()
return "".join(extensions)
Hinweis: Diese Lösung unter Windows unterstützt keine Dateinamen mit dem Zeichen "\".
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
Der Einfachheit halber wird eine einfache Funktion, die die beiden Methoden aus 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
Getestet mit Python 3.5.
Wir könnten einige einfache split
/ pop
Magie wie hier zu sehen ( https://stackoverflow.com/a/424006/1250044 ), um den Dateinamen zu extrahieren (unter Berücksichtigung der Unterschiede zwischen Windows und 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
@CharlesPlager os.path.splitext() funktioniert nicht, wenn mehrere Punkte in der Erweiterung enthalten sind. stackoverflow.com/a/37760212/1250044
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.