2017-07-24 1 views
3

Ich bekomme einen Dateinamen von einem Benutzer & die Datei für ihn hochladen, Mein Problem ist, dass aufgrund meines Codes, Benutzer sollte den Dateinamen eingeben, um es hochladen, aber ich möchte genauer suchen & laden Sie alle Dateien, die Ihr Name ist wie der Name Benutzer eingegeben, Wie kann ich es anstelle dieses Codes schreiben?Wie in Dateien mit Python sorgfältiger suchen?

Beispiel: Wenn Benutzertyp Biologie, sollten die Programmdateien hochladen, die wie Campbell Biologie sind, oder meine Biologie ...

Ich brauche so etwas wie Statement in SQL ...

try: 
    requested_file = open(str(args[0]) + '.pdf', 'rb') 
+0

Ich denke, mit seinem Schema könnte der Benutzer am Ende viele private Dateien hochladen, die sie nicht hochladen wollten. – ForceBru

+0

@ForceBru Das Programm sucht nach Dateien und sendet für sie keine Benutzer ... –

+3

Sie können entweder regex oder glob mit Platzhaltern verwenden. –

Antwort

2

Es scheint, dass Sie alle Dateien erhalten möchten, die die bestimmte Suchzeichenfolge enthalten, die der Benutzer eingibt. Es gibt zwei Möglichkeiten, die zweite ist gründlicher als die erste.

Option 1
können Sie die glob.glob Funktion verwenden, Platzhalter vorbei:

import glob 

search = ... # your term here 
for files in glob.glob('*%s*.pdf' % search): 
    ... # do something with file 

Option 2
re.search + os.listdir. Sie können Ihr vorhandenes Verzeichnis durchlaufen und mit Regex filtern.

import os 
import re 

pattern = re.compile('.*%s.*\.pdf' %search, re.I) 
for files in filter(pattern.search, os.listdir('.')): 
    ... # do something with files 

Die zweite Option bietet Ihnen ein wenig mehr Flexibilität. glob ist durch die Wildcard-Syntax begrenzt.

+1

Danke mein Freund ... –

+0

@AliBahaari Sie können auch Antworten, die Ihnen hilfreich waren. Prost. –

Verwandte Themen