¿Cómo puedo escapar de barras diagonales en python, para que open () vea mi archivo como un nombre de archivo para escribir, en lugar de un filepath para leer?

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

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.