2016-07-14 108 views
-2

我已經編寫了一個python模塊,它可以獲取文件中可用的記錄數並將其存儲到變量中。稍後我需要將此值轉換爲字符串並與用戶提供的值進行比較。令人驚訝的是,使用python str()函數將int轉換爲字符串變爲零。有人能讓我知道如何解決這個問題嗎?下面是代碼和輸出,將int變量的值轉換爲字符串並將其分配給新變量變爲零

def compareFileCount(self, step, path, exp): 
    dirpath = path 
    teststep = step 
    value = exp 
    command = "wc -l <"+" "+dirpath 
    operation = os.system(command) 
    print operation 
    operation1=str(operation) 
    print "value of operation1 = "+operation1 
    if operation1 == value: 
      print "File record count "+operation1+" is equal to expected value of - "+value+". Test Step Passed for -"+teststep 
      self.logstatus(teststep, "PASSED") 
    else: 
      print "File record count "+operation1+" is not equal to expected value of - "+value+". Test Step Failed for -"+teststep 
      self.logstatus(teststep, "FAILED") 

當調用上述方法與下面的值,

os.compareFileCount("teststpe1", "/data/automation/202585_ForkJoin/testfiles/hvac_feed1.csv", "4") 

輸出
4 
0 
value of operation1 = 0 
File record count 0 is not equal to expected value of - 4. Test Step Failed for -teststpe1  
+0

不知道你在這裏是什麼意思。 'os.system'的結果已經爲0,因爲這是'wc'命令的退出代碼。 –

+0

理想情況下,變量「operation」保存命令os.system(wc -l <​​/data/automation/202585_ForkJoin/testfiles/hvac_feed1.csv)的輸出爲「4」。但是,當我使用str()將其轉換爲字符串並將其分配給operation1時,稍後從「operation1」打印的值爲「0」。理想情況下,它應該包含未完成的'4'。 – Suneel

+0

但它不包含。它包含命令的退出代碼,如輸出所示。它從來沒有4,它總是0. –

回答

2

在Unix,使用os.system的返回值是退出進程的狀態,所以0意味着進程沒有錯誤退出。你應該使用下面的例子:

proc = subprocess.Popen('ls', stdout=subprocess.PIPE) 
tmp = proc.stdout.read()