私はどこに行くべきかわからないところまでこれを打ちました。私はそれをset()メソッドに絞り込んだ。私はWindowsマシン上でこれを実行するとうまく動作します。しかし、それはLinux上で実行する必要があります。これを行うときには、何も変数に格納されません。linuxでの設定方法
これは、set()メソッドを使用するコードです。 Windowsマシンに
def three_way_compare(startup, running, archive):
isdiff = True
print "Running Three-Way Comparison."
if cmp(startup, archive) and cmp(running, archive) != 0:
print "Archive File(s) Missing:"
compareset = sorted(set(startup)^set(archive))
elif cmp(startup, archive) != 0:
print "Startup File(s) Missing:"
compareset = sorted(set(startup)^set(archive))
elif cmp(running, archive) != 0:
print "Running File(s) Missing:"
compareset = sorted(set(running)^set(archive))
elif cmp(running, startup) != 0:
print "Running and Startup do not match"
compareset = sorted(set(running)^set(startup))
else:
print "All Files Exist"
isdiff = False
if isdiff == True:
from sendmail import send_mail
#write_diff_file(compareset)
print compareset
compareset変数店舗すべての異なる要素とそれが表示される。しかし、それはLinux上でない、ただ次のことを示します。ウィンドウで[]はすべての異なる要素で満たされます。スリーウェイの比較を実行
。スタートアップファイルが見つかりません:[]比較 完了しました。
任意の助けをいただければ幸いですので、私はまだプログラミングに新たなんです。ここで
は、Parseメソッドです。
def parse_files(directory):
results = []
i = 0
l = len(os.listdir(directory))
#os.chdir(directory)
try:
for filename in os.listdir(directory):
if filename.endswith(('.cfg', '.startup', '.confg')):
file_name = os.path.join(directory, filename)
with open(file_name, "r") as in_file:
for line in in_file:
match = re.search('^hostname\s(\S+)$', line)
if match:
results.append(match.group(1))
#print "Match Found"
sleep(0.001)
i += 1
progress_bar(i, l, prefix = 'Progress:', suffix = 'Complete', barLength = 50)
return results
except IOError as (errno, strerror):
print "I/O error({0}): {1}".format(errno, strerror)
print "Error in parse_files function"
'!= 0 'とは何ですか?その必要はありません。ゼロ以外の値はすでに真です。 –
私は、cmp()が異なる場合は1または-1を返し、同じ場合は0を返します。私は、もしcmpが同じでないならtrueを返すと言っていました。しかし、多分そのJavaで考える?私はまだ非常に新しいです。私は他にそれを正しくする方法を知らなかった。 – NineTail
エラーが発生した行を示すスタックトレースを含め、完全なエラーを投稿してください。また、あなたの目標がこの機能のために何であるか教えてください。 –