2016-01-06 1 views
-2

J'ai un code python pour lire un fichier de données qui fonctionne parfaitement sous Windows. Désolé si c'est facile - je suis nouveau à Python. Maintenant j'essaye de l'exécuter sur Linux et cela ne fonctionnera pas. J'ai changé tous les chemins en conséquence et le problème semble être après avoir lu les variables dans le fichier texte de configuration, quand il essaie de lister les noms de fichiers.Le code Python fonctionne sur Win, pas sur Linux

est ici segments du code et le résultat:

{This is called to read the configuration file at the beginning of the code. It runs and seems to work fine:} 
def readConfig(fn): 
# dynamically create the dictionary from the config file 
# check for duplication 

    config = {} 
    file = open(fn,'r') 
    lines = file.readlines() 
    for x in lines: 
#  print x ,re.search("=",x) 
     if re.search('=',x) > 0: 
#   print x 
      parts = x.split("=") 
      key = parts[0] 
      parts = parts[1].split(" ") 
      parts = parts[0].split("\n") 
      value = parts[0] 
      config[key]=value #this appends, if key exists it will take 
    print '' 
    print config 
    print '' 
    file.close() 
    return config 



{Here's where it tries to list the files in the source directory. Source directory src is defined in the configuration file:} 
# 5. scan in the src directory and process those files 
    src = halo1Config['SRC'] 
    files = listFiles(src,".hpl") 
    print src 
    print files 



{This is what Listfiles does:} 
def listFiles(src,ext): 
# get list of files from directory src and subdir below with ext 
# ext ="" is okay 
    fns=[] 
    for dirName, subdirList, fileList in os.walk(src, topdown=True): 
# print('Found directory: %s' % dirName) 
     for fname in fileList: 
#  print('\t%s' % fname) 
      if fname.lower().endswith(ext): 
       fn = os.path.join(dirName,fname) 
       fns.append(fn) 
    return fns 

Dans ce code, SRC =/home/data/et dans ce dossier il y a des fichiers avec des noms tels que User1_2015.hpl - ce sont les données fichiers (texte). Le code sort src correctement, mais il sort [] pour les fichiers, même s'il y a une longue liste de fichiers dans le répertoire src. D'où le problème doit être avec ListFiles, mais je ne peux pas voir ce qui ne va pas avec ... et ça fonctionne très bien quand je l'utilise sur Windows!

Est-ce que quelqu'un sait ce que je fais mal?

Merci!

+0

Vous avez mentionné le problème est en train de lire le fichier de configuration - mais vous ne postez pas le code qui lit le fichier de configuration. S'il vous plaît modifier votre question et ajouter les bits pertinents. –

+2

Veuillez fournir un [exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve), ou, mieux encore, apprendre [comment déboguer de petits programmes] (http://ericlippert.com/2014/03/05/how-to-debug-petits-programmes /). –

+0

Les fichiers se terminent-ils par '.HPL' sous Windows, au lieu de' .hpl'? –

Répondre

0

Vous pouvez essayer:

import os 
fn = os.path.realpath(fn)