J'ai un programme qui tente de lire un fichier, s'il peut lire le fichier, il va générer une liste à partir de ce fichier et retourner une sélection aléatoire de cette liste à l'utilisateur. Si le fichier ne peut pas être trouvé, ou s'il y a une autre erreur, un message alertera l'utilisateur et le programme utilisera par défaut une liste par défaut dans le code source de mon programme.FileNotFoundError, os.getcwd() retourne le nom du fichier et non un répertoire
Je passe la première partie du nom de fichier d'une fonction à une fonction readFile() qui ajoute '.txt' au nom de fichier qui lui a été transmis et essaie de lire l'un des trois fichiers, selon le nom de la fonction a été donné.
Malgré les fichiers existants, et je l'ai affiché des extensions cachées pour vous assurer qu'il ne .txt.txt appelé, le programme est encore un FileNotFoundError retournaient
Recherche en ligne, je l'ai entendu mention os.getcwd() J'ai donc couru print (os.getcwd()) au début de ma fonction readFile() et ce qui était retourné était all.txt; "all" étant la valeur que j'ai passé à readFile() pour effectuer ce test. Donc je crois que le fichier, dans ce cas, all.txt est introuvable, car le répertoire de travail du programme dans cette fonction est défini sur le nom de fichier plutôt que sur le répertoire du programme.
Comment puis-je résoudre ce problème? Voici la fonction qui passe le nom du fichier, sans inclure l'extension à la fonction readFile(); il y a plusieurs options, j'ai juste inclus le premier pour améliorer la lisibilité ici, toutes les options retournent la même erreur, et se comportent de la même manière.
def generateActivity() :
chores = ['Washing Up', 'Laundry']
fun = ['Watch TV', 'Play a game']
allActivities = chores + fun
print(allActivities)
if menu() == 'R' :
try :
allList = readFile('all')
displayOutput(random.choice(allList))
except FileNotFoundError :
print('Sorry, all activities list, file not found')
print('Using default all activities list...\n')
displayOutput(random.choice(allActivities))
except :
print('Sorry there was an error with all.txt')
print('Using default all activities list...\n')
displayOutput(random.choice(allActivities))
Ceci est la fonction readFile().
def readFile(list) :
print(os.getcwd())
READ = 'r'
fileName = list + '.txt'
with open(fileName, READ) as f :
# Reads the entire file
dictionary = f.readlines()
# Seperates each word to create a list of words
Activitylist = [word.strip() for word in dictionary]
return(ActivityList)
Nous vous remercions de votre contribution @Omneya – sugarfree