Python yolundan genişlənmədən fayl adını necə əldə etmək olar?

Python yolundan genişlənmədən fayl adını necə əldə etmək olar?

os.path.basename adını os.path.basename ilə almaq üçün os.path.basename adlı bir metodu os.path.basename . Amma path.basename idxal path.basename , mən bunu path.basename adına deyə path.basename . Bunu birbaşa əsas adı kimi deyə bilərəmmi?

462
24 марта '09 в 19:41 2009-03-24 19:41 Joan Venge 24 mart 2009-cu il saat 19: 41-da soruşdu
@ 18 cavab

Fayl adı uzadılmadan əldə etmək:

 import os print(os.path.splitext("path_to_file")[0]) 

İthalat probleminizə gəldikdə, bunu aşağıdakı kimi həll edirsiniz:

 from os.path import basename # now you can call it directly with basename print(basename("/a/b/c.txt")) 
669
24 марта '09 в 19:43 2009-03-24 19:43 Cavab 24 mart 2009-cu il saat 19: 43-da Geo ilə verilir

Yalnız onu tarayın:

border=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' 
223
24 марта '09 в 19:49 2009-03-24 19:49 Cavab gimel tərəfindən verilir 24 Mart 2009 19:49 2009-03-24 19:49
 >>> print os.path.splitext(os.path.basename("hemanth.txt"))[0] hemanth 
118
04 авг. cavab cavanth.hm 04 aug verilir . 2009-08-04 19:44 '09 at 7:44 PM 2009-08-04 19:44

Fayl yolunu saxlamaq və yalnız uzantıyı silmək istəsəniz

 >>> file = '/root/dir/sub.exten/file.data.1.2.dat' >>> print ('.').join(file.split('.')[:-1]) /root/dir/sub.exten/file.data.1.2 
13
21 окт. User2902201 Oct 21 tərəfindən verilən cavabı . 2013-10-21 10:46 '13 saat 10:46 'da 2013-10-21 10:46

Amma OS'umu idxal etsən də, mən bunu path.basename adına deyə bilmərəm. Bunu birbaşa əsas adı kimi deyə bilərəmmi?

import os və sonra os.path.basename istifadə os.path.basename

os.foo , o-a istinad etmədən os.foo istifadə edə bilərsiniz.

8
24 марта '09 в 19:45 2009-03-24 19:45 Cavab Devin Jeanpierre tərəfindən 24 Mart 2009 19: 45-də saat 24: 09-da verilir

uzadanda bir neçə xal varsa, os.path.splitext () işləməyəcəkdir.

Məsələn, 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 

Baza adı ilə ilk nöqtənin indeksini tapa bilərsiniz və daha sonra yalnız uzantı olmadan fayl adını almaq üçün əsas adı kəsin.

 >>> 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 
7
11 июня '16 в 8:17 2016-06-11 08:17 Cavab Dheeraj Chakravarthi tərəfindən 11 İyun '16' da 8:17 2016-06-11 08:17 'də verilir

pathlib üçün burada python 3.2 + pathlib həlli:

 from pathlib import Path print(Path(your_path).resolve().stem) 
4
24 авг. cavab Morgoth 24 aug verilir . 2017-08-24 19:08 '17 də 7:08 'də 2017-08-24 19:08

import os

 filename = C:\\Users\\Public\\Videos\\Sample Videos\\wildlife.wmv 

Bu, extension olmadan bir filename qaytarır (C: \ Users \ Public \ Videos \ Sample Videos \ wildlife)

 temp = os.path.splitext(filename)[0] 

İndi yalnız filenamızı tempdən istifadə edə bilərsiniz

 os.path.basename(temp) #this returns just the filename (wildlife) 
3
11 янв. Cavab 11 yanvar məlumat koduyla verilir 2017-01-11 02:29 '17 də 2:29 2017-01-11 02:29
 import os path = "a/b/c/abc.txt" print os.path.splitext(os.path.basename(path))[0] 
2
28 мая '15 в 16:24 2015-05-28 16:24 cavab 28.05.2014 tarixində saat 16: 24-da İstifadəçi 4949344 tərəfindən verilmişdir 2015-05-28 16:24

Windows-da, məsələn, sürücü adı prefiksindən istifadə etdim:

 >>> s = 'c:\\temp\\akarmi.txt' >>> print(os.path.splitext(s)[0]) c:\temp\akarmi 

Beləliklə, mən bir sürücü məktubu və ya kataloq adı lazım deyil, mən istifadə:

 >>> print(os.path.splitext(os.path.basename(s))[0]) akarmi 
2
19 авг. Cavab Zéiksz 19 aug verilir . 2013-08-19 12:12 '13 'da 12:12' də 2013-08-19 12:12

Burada ( on123.ru.site /questions/16186 / ... ) göstərildiyi kimi, bir az split / pop sehrini edə bilərik (Windows və POSIX arasındakı fərqləri nəzərə alaraq).

 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 
1
10 янв. cümə günü verildi 2015-01-10 10:05 '15 at 10:05 2015-01-10 10:05

@IceAdor, şərhdə @ user2902201 həllini rsplit ilə əlaqələndirir. rsplit bir neçə dövrü dəstəkləyən sadə həlldir.

Bu deyilir:

 file = 'my.report.txt' print file.rsplit('.', 1)[0] 

my.report

1
23 мая '17 в 23:09 2017-05-23 23:09 Cavab verilən dlink 23 may, '17 'da 11:09 2017-05-05 23:09

Bir çox uzantı ilə prosedur. strunicode yolları üçün çalışır. Python 2 və 3 ilə təchiz edilmişdir.

 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) 

Davranış:

 >>> 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.abcdefg') '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' 
1
18 окт. Cavab 18 yanvarda Lycan'a verilir . 2017-10-18 16:15 '17 saat 16:15 'da 2017-10-18 16:15

Bunun ən asan yoludur

 import ntpath print('Base name is ',ntpath.basename('/path/to/the/file/')) 

Bu zaman və hesablama xərclərini saxlayır.

0
24 окт. 24 oktyabr joseph nkoro tərəfindən verilən cavabı . 2017-10-24 04:51 '17 at 4:51 2017-10-24 04:51

Python Pathlib istifadə edərək oxunaqlı versiya

 from pathlib import Path Path('/root/dir/sub/file.ext').stem 

Yazdırılacaq:

fayl

Yol simvolik bir link ola bilərsə, resolve()

 Path('/root/dir/sub/file.ext').resolve().stem 
0
26 нояб. Cavab cəsarətli 26 Noyabrda verilir. 2017-11-26 16:32 '17 də 4:32 'də 2017-11-26 16:32' də
 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 
0
01 июня '17 в 16:27 2017-06-01 16:27 cavab şivendra singh 01 iyun '17 saat 16:27 2017-06-01 16:27 verilir

Rahatlıq üçün, os.path dən iki üsulu sadələşdirən bir funksiya:

 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 istifadə edərək test edilmişdir.

0
22 сент. cavab verildi 2016-09-22 23:23 '16 'da saat 11:23' də 2016-09-22 23:23

Tam fayl uzantısını bilirsinizsə, məsələn .txt istifadə edə bilərsiniz:

 print fileName[0:-4] 
-5
06 дек. Cavab verilən esraa 06 Dek 2017-12-06 01:09 '17 də 1:09 2017-12-06 01:09