Как проверить, существует ли файл с * в python? - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь проверить, существует ли файл, чтобы я мог его прочитать. Кикер в том, что я не знаю, какой номер в файле. За один раз должен существовать только один файл, но имя обновляется, когда я пишу в файл (в другой части кода), поэтому я не знаю точно, каким будет число, когда этот фрагмент кода будет выполнен.

N=0
if os.path.exists('*somefile.txt'): #if the file exists, read it
    print("found Nsomefile.txt")
    filename = '*somefile.txt'
    something=np.loadtxt(filename)
    N = int(filename.split('s')[0]) #save the N from the filename
else: #otherise, preallocate memory for something
    something = np.empty((x,y))  
print(N,"of some thing")

В моем каталоге я вижу там файл ('32somefile.txt'), но код все еще печатает 0 of some thing

Ответы [ 3 ]

3 голосов
/ 22 февраля 2020

Вы можете использовать glob () из pathlib.

https://docs.python.org/3.5/library/pathlib.html#pathlib .Path.glob

1 голос
/ 22 февраля 2020

Вы, вероятно, должны использовать здесь glob, а не функции os.

Glob также поддерживает * символы, так что он подойдет для вашего варианта использования.

0 голосов
/ 24 февраля 2020

Спасибо всем! Я забыл о глобусе. (Я использую его в другой части моего кода ( facepalm )). Теперь это выглядит так:

import numpy as np
from glob import glob
N=0
if glob('*somefile.txt'): #if the file exists, read it
    print("found Nsomefile.txt")
    filename = glob('*somefile.txt')[0]
    something=np.loadtxt(filename)
    N = int(filename.split('s')[0]) #save the N from the filename
else: #otherise, preallocate memory for something
    something = np.empty((x,y))  
print(N,"of some thing")

, который выводит

found Nsomefile.txt
32 of some thing
...