Permítanme comenzar con esto diciendo que no estoy exactamente seguro de lo que está sucediendo con mi código; Soy bastante nuevo en la progtwigción.
He estado trabajando en la creación de un proyecto final individual para mi clase de python CS que verifica el sitio web de mi profesor a diario y determina si ha cambiado alguna de las páginas web de su sitio web desde la última vez que se ejecutó el progtwig.
El paso en el que estoy trabajando ahora es el siguiente:
def write_pages_files(): ''' Writes the various page files from the website's links ''' links = get_site_links() for page in links: site_page = requests.get(root_url + page) soup = BeautifulSoup(site_page.text) with open(page + ".txt", mode='wt', encoding='utf-8') as out_file: out_file.write(str(soup))
Los enlaces se parecen a esto:
/ site / sitename / class / final-code
- Python3: print (somestring, end = '\ r', flush = True) no muestra nada
- Cómo verificar si una carpeta contiene archivos con Python 3
- ¿Para qué se utilizan __signature__ y __text_signature__ en Python 3.4?
- ¿Cómo transmitir stdout / stderr desde un proceso hijo usando asyncio y obtener su código de salida después?
- Python 3.4 SSL error urlopen error EOF ocurrió en violación del protocolo (_ssl.c: 600)
Y el error que recibo es el siguiente:
with open(page + ".txt", mode='wt', encoding='utf-8') as out_file: FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
¿Cómo puedo escribir las páginas del sitio con estos tipos de nombres (/site/sitename/nameofpage.txt)?
no puede tener /
en el archivo nombre base en Unix o Windows, puede reemplazar /
con .
:
page.replace("/",".") + ".txt"
Python presumes /site
etc .. es un directorio.
En Unix / Mac OS, para las barras intermedias, puede usar :
que se convertirá a /
cuando se vea, pero activará las subcarpetas que /
hace.
site/sitename/class/final-code
-> archivo de final-code
en una carpeta de class
en una carpeta de nombre de site
en una carpeta de site
en la carpeta actual site:sitename:class:final-code
-> site/sitename/class/final-code
archivo de site/sitename/class/final-code
en la carpeta actual.
Relacionado con el título de la pregunta, aunque no con los detalles, si realmente desea que sus nombres de archivo incluyan algo que parezca una barra, puede usar el carácter de unicode “(” ( DIVISION SLASH ), también conocido como u'\u2215'
.
Esto no es útil en la mayoría de las circunstancias (y puede ser confuso), pero puede ser útil cuando la nomenclatura estándar para un concepto que desea incluir en un nombre de archivo incluye barras diagonales.