2016-05-16 6 views
-1

Ich schreibe gerade ein Skript, das eine Datei für eine bestimmte Zeichenfolge analysiert und die Datei in diese Zeichenfolge umbenennt. Die Dateien, mit denen dieses Skript arbeiten wird, verfügen jedoch nicht über Dateierweiterungen. Sie sind in jedem Texteditor lesbar, haben jedoch keinen anderen Dateityp als den generischen Typ "FILE" in ihrem Eigenschaftenfenster.Python: Wie kann ich Dateien in einem Verzeichnis öffnen und lesen, die keine Dateierweiterung (Windows) haben?

Ich habe versucht, dies für ein paar Tage jetzt zu erforschen und habe erfolglos in der Suche nach Dokumentation für mein Problem gefunden. Gibt es eine Python-Methode zum Öffnen, Lesen, Umbenennen und Speichern einer Datei ohne angegebene Dateierweiterung?

+0

Haben Sie os.rename() ausprobiert? – flyingmeatball

+0

Warum ist Ihrer Meinung nach eine Verlängerung wichtig? –

+0

_gibt es eine Python-Methode zum Öffnen, Lesen, Umbenennen und Speichern einer Datei, die keine angegebene Dateierweiterung hat? _ Ja, die gleiche Funktion wie zum Bearbeiten von Dateien mit Erweiterungen. Siehe [Dateiobjekte] (https://docs.python.org/2/library/stdtypes.html#file-objects) und [os] (https://docs.python.org/2/library/os.html) Modul. –

Antwort

0

Sie können open() oder os.rename() alle Dateien, auf die Sie Zugriff haben. Es spielt keine Rolle, ob es eine Erweiterung hat.


Wenn Sie nicht wissen, welche Dateien umbenennen, dann öffnen Sie einfach alle Dateien, deren Inhalt und wirken auf die Dateien lesen, die dem entsprechen, was Sie suchen.

import os 

# Get a list of all files under the current directory 
flist = [] 
for root, dirs, files in os.walk('.'): 
    flist += [os.path.join(root, f) for f in files] 

# Go over each file and see if it contains the string foo 
want = 'foo' 
targets = [] 
for path in flist: 
    with open(path) as df: 
     data = df.read() 
    if want in data: 
     targets.append(path) 
# The targets list now contains the paths of all the files that contain foo. 
0

Werfen Sie einen Blick auf this answer.

Wenn Sie durch die Liste der Dateien iterieren, können Sie einfach überprüfen, ob die Erweiterung leer ist.

def file_has_no_extension(file_path): 
    """ 
    Return true if and only if the file has no extension. 
    """ 
    filename, file_extension = os.path.splitext('/path/to/somefile.ext') 

    return not file_extension 

Für den Rest Ihrer Frage haben nur einen Blick auf Tutorials wie this.

Verwandte Themen