"No such file or directory" von os.mkdir
arbeiten auf ein python-Projekt, und was es tut, ist, es sieht auf den index lifehacker.com dann findet alle tags mit der Klasse "headline h5 hover-markieren-Eintrag-Titel", dann erstellt es Dateien für jedes Verzeichnis. Aber das problem ist nur, dass wenn ich es laufen lasse, bekomme ich OSError: [Errno 2] No such file or directory: "/home/root/python/The Sony Smartwatch 3: A Runner's Perspective (Updated: 1/5/2015)"
Hilfe wäre nett, danke!
heres mein code atm:
import re
import os
import urllib2
from bs4 import BeautifulSoup
from mechanize import Browser
url = "http://lifehacker.com/"
url_open = urllib2.urlopen(url)
soup = BeautifulSoup(url_open.read())
link = soup.findAll("h1",{"class": "headline h5 hover-highlight entry-title"})
file_directory = "/home/root/python/"
for i in link:
os.mkdir(os.path.join(file_directory, str(i.text)))
print "Successfully made directory(s)", i.text, "!"
else:
print "The directory", i.text, "either exists, or there was an error!"
Denken Sie daran: Sie haben
/
Zeichen in Verzeichnis name.InformationsquelleAutor DANIEL REAPSOME | 2015-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bereinigen Sie Ihre Dateinamen. (Geschieht dies nicht, ist auch zu führen, dass Sie die Sicherheit, besonders wenn Sie nicht verhindern, dass Dinge, beginnend mit
../
).Dies könnte so einfach sein wie:
Als es ist, Ihr code versucht, ein Verzeichnis zu erstellen namens
2015)
, in einem Verzeichnis mit dem Namen5
, in einem Verzeichnis mit dem NamenThe Sony Smartwatch 3: A Runner's Perspective (Updated: 1
. Da keiner von diesen vorhanden ist, undos.mkdir()
ist nicht rekursiv, erhalten Sie die Fehlermeldung in Frage. (Wenn Sie wollen eine rekursive operation, sieheos.makedirs()
statt).jetzt bin ich nun immer diese Fehlermeldung: UnicodeEncodeError: 'ascii' codec can T encode character u'\u200b' in position 0: ordinal not in range(128)
das ist eine andere Frage-und eine, die bereits gefragt und beantwortet, so dass Sie keine Schwierigkeiten haben, eine Antwort zu suchen. (
str()
ist nicht unbedingt das richtige für die Dinge, die nicht Reine ASCII).Verwenden
os.makedirs()
ein einschlägiger Vorschlag falls das übergeordnete Verzeichnis nicht existiert, aber die OP ist hier Anhängen nur einen einzigen Namen. Mit
makedirs()
und weglassen derreplace()
nicht lösen Ihre Sicherheit/Bereinigung Probleme (ie. jemand abfangen dieser plain-HTTP-Verbindung und Injektion ein Ergebnis mit dem Eintrag Titel../.ssh
, zum Beispiel, und dann die Simulation einer Seite mit dem Namenauthorized_keys
darin), so ist es geradezu gefährlich.InformationsquelleAutor Charles Duffy