Problème de changement de répertoire courant
Résolu
Nico_63
Messages postés
41
Date d'inscription
Statut
Membre
Dernière intervention
-
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Problème de changement de répertoire courant
- Changer de dns - Guide
- Changement de police - Guide
- Changer de carte graphique - Guide
- Répertoire téléphonique gratuit - Télécharger - Bureautique
- Changement d'heure - Guide
12 réponses
Bonjour,
Que veux tu faire exactement ?
Avec ta boucle while, tu lis ton fichier par blocs de 40 octets:
et pas ligne par ligne, c'est bien ça que tu veux ?
Sinon, chez moi, ton code marche bien ...
Que veux tu faire exactement ?
Avec ta boucle while, tu lis ton fichier par blocs de 40 octets:
txt = fs.read(40)
et pas ligne par ligne, c'est bien ça que tu veux ?
Sinon, chez moi, ton code marche bien ...
Bonjour Phil_1857.
La boucle while lit le fichier par 40 caractères. Le problème n'est pas là.
Je te remets ci-dessous les paragraphes de mon message initial qui expliquaient mon problème.
La fonction ci-dessous réalise une copie de fichier texte. Elle fonctionne correctement mais je dois pour cela placer le fichier à copier dans le dossier « EP26 » où se trouve EduPython.exe qui me permet de lancer Python et la copie arrive au même endroit. Je voudrais que la fonction prenne le fichier à copier dans le dossier « Principal » et place la copie au même endroit. Mais lorsque dans le sript (qui a été enregistré dans le dossier « Principal »), au dessus de la définition de la fonction, je rajoute les deux lignes suivantes, j’obtiens un message d’erreur lorsque j’utilise la fonction.
...
C’est pareil si au lieu d’insérer ces deux lignes au début du script, je les rentre directement au niveau de l’interpréteur, après avoir exécuté le script et avant d’utiliser la fonction.
La boucle while lit le fichier par 40 caractères. Le problème n'est pas là.
Je te remets ci-dessous les paragraphes de mon message initial qui expliquaient mon problème.
La fonction ci-dessous réalise une copie de fichier texte. Elle fonctionne correctement mais je dois pour cela placer le fichier à copier dans le dossier « EP26 » où se trouve EduPython.exe qui me permet de lancer Python et la copie arrive au même endroit. Je voudrais que la fonction prenne le fichier à copier dans le dossier « Principal » et place la copie au même endroit. Mais lorsque dans le sript (qui a été enregistré dans le dossier « Principal »), au dessus de la définition de la fonction, je rajoute les deux lignes suivantes, j’obtiens un message d’erreur lorsque j’utilise la fonction.
...
C’est pareil si au lieu d’insérer ces deux lignes au début du script, je les rentre directement au niveau de l’interpréteur, après avoir exécuté le script et avant d’utiliser la fonction.
Bonjour Nico,
Effectivement, j'avais la même erreur que toi
Apres quelques tests, j'ai fait ceci et ça fonctionne (import os) :
Effectivement, j'avais la même erreur que toi
Apres quelques tests, j'ai fait ceci et ça fonctionne (import os) :
# -*- coding:Latin-1 -*- import os os.chdir(r'C:\Phil\Dev\Python\tests') def copie_fichier(source, destination): fs = open(source, 'r') fd = open(destination, 'w') while True : txt = fs.read(40) if txt == '' : break else : fd.write(txt) fs.close() fd.close() copie_fichier('t.txt', 't2.txt')
Phil,
j'ai déjà testé cela (voir mon message initial).
Je viens de retester ces trois variantes:
dans tous les cas, j'arrive au même message d'erreur...
j'ai déjà testé cela (voir mon message initial).
Je viens de retester ces trois variantes:
from os import * chdir('D:/Mes autres documents/divers/Python/Principal')
import os chdir('D:/Mes autres documents/divers/Python/Principal')
import os chdir(r'D:/Mes autres documents/divers/Python/Principal')
dans tous les cas, j'arrive au même message d'erreur...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pardon
from os import * chdir('D:/Mes autres documents/divers/Python/Principal')
import os os.chdir('D:/Mes autres documents/divers/Python/Principal')
import os os.chdir(r'D:/Mes autres documents/divers/Python/Principal')
OK,
Reste à savoir ce que tu fais exactement, comment tu appelle ta fonction, etc. …
donc moi, je vis te décrire ce que je fais
Ce qui est sur c'est que ceci me donne exactement la même erreur que toi:
Mon fichier t.txt est dans le répertoire
C:\Phil\Dev\Python\tests
Mon script Python test.py, qui contient le code que je t'ai posté précédemment
est dans le répertoire
C:\Phil\Dev\Python\tests\ccm
ils sont donc bien dans 2 répertoires différents
Pour exécuter mon script, je double-clique sur test.py
Il s'exécute dans l'invite de commandes:

Mais je pourrai aussi le lancer dans mon IDE (en l'occurrence IDLE), mais bon, ça ne change rien
Fais-tu exactement comme ça, avec le code complet comme ci-dessus ?
Reste à savoir ce que tu fais exactement, comment tu appelle ta fonction, etc. …
donc moi, je vis te décrire ce que je fais
Ce qui est sur c'est que ceci me donne exactement la même erreur que toi:
from os import * chdir('D:/Mes autres documents/divers/Python/Principal')
Mon fichier t.txt est dans le répertoire
C:\Phil\Dev\Python\tests
Mon script Python test.py, qui contient le code que je t'ai posté précédemment
est dans le répertoire
C:\Phil\Dev\Python\tests\ccm
ils sont donc bien dans 2 répertoires différents
Pour exécuter mon script, je double-clique sur test.py
Il s'exécute dans l'invite de commandes:
Mais je pourrai aussi le lancer dans mon IDE (en l'occurrence IDLE), mais bon, ça ne change rien
# -*- coding:Latin-1 -*- import os os.chdir(r'C:\Phil\Dev\Python\tests') def copie_fichier(source, destination): fs = open(source, 'r') fd = open(destination, 'w') while True : txt = fs.read(40) if txt == '' : break else : fd.write(txt) fs.close() fd.close() copie_fichier('t.txt', 't2.txt') input ('\nLe fichier t2.txt a été créé\nPresser Entrée ...')
Fais-tu exactement comme ça, avec le code complet comme ci-dessus ?
J'ai une version portable de Python sur clé USB. Cela me permet de travailler de façon nomade.
Mais je ne peux pas double-cliquer sur le fichier .py, car Python n'est pas installé sur l'ordinateur. J'exécute directement le script dans ma session de Python, puis j'appelle la fonction à la ligne de commande.



Je viens de m'apercevoir qu'avec les variantes 2 et 3 le message d'erreur est différent.
Je vais devoir partir pour la journée. Je regarderai à nouveau ce soir. Merci à toi.
Mais je ne peux pas double-cliquer sur le fichier .py, car Python n'est pas installé sur l'ordinateur. J'exécute directement le script dans ma session de Python, puis j'appelle la fonction à la ligne de commande.
Je viens de m'apercevoir qu'avec les variantes 2 et 3 le message d'erreur est différent.
Traceback (most recent call last): File "<string>", line 449, in runcode File "<interactive input>", line 1, in <module> File "D:\Mes autres documents\divers\Python\astuces\Fichiers essai.py", line 5, in copie_fichier fs = open(source, 'r') FileNotFoundError: [Errno 2] No such file or directory: 'Essai_fichier_texte_2.txt'
Je vais devoir partir pour la journée. Je regarderai à nouveau ce soir. Merci à toi.
Ah ok,
je ne peux donc pas tester dans les mêmes conditions que toi
mais on voit que le message a changé: cette fois, il dit qu'il ne trouve pas le fichier :
FileNotFoundError: [Errno 2] No such file or directory: 'Essai_fichier_texte_2.txt'
alors qu'au début il disait qu'il attendait un integer au lieu d'une string:
TypeError: an integer is required (got type str)
Il y a un progrès :-)
par contre, peux-tu essayer en lançant la fonction dans le script comme je le fais, et non pas en ligne de commande ?
(il faut tout essayer ...)
je ne peux donc pas tester dans les mêmes conditions que toi
mais on voit que le message a changé: cette fois, il dit qu'il ne trouve pas le fichier :
FileNotFoundError: [Errno 2] No such file or directory: 'Essai_fichier_texte_2.txt'
alors qu'au début il disait qu'il attendait un integer au lieu d'une string:
TypeError: an integer is required (got type str)
Il y a un progrès :-)
par contre, peux-tu essayer en lançant la fonction dans le script comme je le fais, et non pas en ligne de commande ?
(il faut tout essayer ...)
Victoire !!!
Merci à toi Phil pour ton aide.
Voici le sript final:
A noter:
1/
ne fonctionne pas mais
fonctionne, alors que ces deux lignes sont normalement équivalentes !
2/ Ne pas oublier de changer les \ du chemin par des /.
3/ On ne peut pas apparemment lors d'un changement de répertoire courant appeler une fonction définie dans le script de la ligne de commande, mais il faut lancer la fonction dans le script lui-même (c'est la première fois que vois ça).
En tout cas, merci encore à toi.
En espérant que cela puisse servir à d'autres...
Merci à toi Phil pour ton aide.
Voici le sript final:
import os rep_cour = os.getcwd() print(rep_cour) os.chdir('D:/Mes autres documents/divers/Python/Principal') rep_cour = os.getcwd() print(rep_cour) def copie_fichier(source, destination): fs = open(source, 'r') fd = open(destination, 'w') while True : txt = fs.read(40) if txt == '' : break else : fd.write(txt) fs.close() fd.close() source = input('Nom du fichier à copier :') destination = input('Nom de la copie à créer :') copie_fichier(source, destination)
A noter:
1/
from os import * chdir('D:/Mes autres documents/divers/Python/brouillon')
ne fonctionne pas mais
import os os.chdir('D:/Mes autres documents/divers/Python/brouillon')
fonctionne, alors que ces deux lignes sont normalement équivalentes !
2/ Ne pas oublier de changer les \ du chemin par des /.
3/ On ne peut pas apparemment lors d'un changement de répertoire courant appeler une fonction définie dans le script de la ligne de commande, mais il faut lancer la fonction dans le script lui-même (c'est la première fois que vois ça).
En tout cas, merci encore à toi.
En espérant que cela puisse servir à d'autres...