2017-05-24 2 views
1

Je dispose d'un fichier x qui apparaît dans un répertoire, comme le prouve list.filesPourquoi file.exists retourne-t-il FALSE alors qu'il est dans list.files?

x <- "./data-raw/paths/calculate-route-by-FROM-TO/2017-05-2075--FROM-Flinders-Street-Railway-Station--Melbourne-Victoria-3004--VIC--TO-Melbourne-Sports-Aquatic-Centre--30-Aughtie-Dr--Melbourne-VIC-3206--VIC-csv" 
x %in% list.files("./data-raw/paths", recursive = TRUE, full.names = TRUE) 
# [1] TRUE 
file.exists(x) 
# [1] FALSE 

Notez que x manque une extension, mais je ne pouvais pas trouver une telle mise en garde à ?file.exists:

file.exists retours un vecteur logique indiquant si les fichiers nommés par son argument existent. (Ici 'existe' est dans le sens de l'appel stat du système: un fichier ne sera signalé comme existant que si vous avez les permissions nécessaires à stat.Existence peut également être vérifié par file.access, qui pourrait utiliser des autorisations différentes et ainsi obtenir un autre Notez que l'existence d'un fichier n'implique pas qu'il est lisible: pour cela utiliser file.access.) Ce qui constitue un 'fichier' dépend du système, mais doit inclure des répertoires. (Toutefois, les noms de répertoires ne doivent pas inclure de barre oblique inverse ou barre oblique à la fin de Windows.) Notez que si le fichier est un lien symbolique sur Unix, le résultat indique si le lien pointe vers un fichier réel, pas seulement si le lien existe . Enfin, notez qu'il existe une fonction différente qui vérifie l'existence des objets R.

La seule indication de la documentation était que les restrictions d'accès peuvent causer FALSE, et même file.access(x) est -1 mais je semblent avoir accès à ce fichier (ainsi que d'autres fichiers très similaires qui ne sont pas aussi touchés).

Répondre

3

Windows a une limite supérieure sur la longueur d'un nom de fichier (260 caractères), qui a dépassé x. En raccourcissant le fichier, file.exists a renvoyé TRUE.