我在python中为串口创建了一个嗅探器,但是当我在windows中创建一个CSV文件时遇到了问题。我在某些方面拆分我的程序,以避免Windows和Linux之间不兼容的可能性。它在linux上运行完美(在32和64字节上测试)。
def createNewFiles(self):
# Nons allons vérifier l'existance du dossier Sniffer_Serie_Result et le créer si besoin
# De même pour le fichier csv
if (os.name == "nt"): # pour windows
self.userPath = os.getenv('HOME') or os.getenv('USERPROFILE')
self.folderPath= os.path.abspath(self.userPath + "\\Sniffer_Serie_Result")
#exist_ok=True ==> cree le dossier si il n'existe pas
os.makedirs(self.folderPath,exist_ok=True)
self.timestampWithSec= self.timestampWithoutMilli() # utilisé dans les noms de fichier
self.filePathRequest= os.path.abspath(self.folderPath + "\\Request_at_" + self.timestampWithSec + ".csv")
self.filePathResponse= os.path.abspath(self.folderPath + "\\Response_at_" + self.timestampWithSec + ".csv")
self.filePathOverall = os.path.abspath(self.folderPath + "\\Overall_result_at_" + self.timestampWithSec + ".csv")
with open(self.filePathRequest, 'w') as f:
writer = csv.writer(f)
writer.writerow(["Kind of message","Timestamp","Message Hexa","Message ASCII"])
with open(self.filePathResponse, 'w') as f:
writer = csv.writer(f)
writer.writerow(["Kind of message","Timestamp","Message Hexa","Message ASCII"])
创建文件夹Sniffer_Serie_Result时没有错误 因此,此代码在第一个时间返回以下错误:
IOError:[Errno 22]参数无效:'C:\ Documents and Settings \ stagiaire \ Sniffer_Serie_Result \ Request_at _......(实际日期和时间).csv'
我尝试了许多像原始字符串一样的字符串,但没有任何作用。
注意:我用于测试的窗口是XP,这也需要在7上工作
我希望你能帮助我。 请帮忙!
我不能在星期四之前提供更多信息(暂时不在家上网)
答案 0 :(得分:1)
您尝试在文件名中使用:
个字符,而在Windows中为该驱动器名称保留该字符(例如c:/
)。
您必须:
timestampWithoutMilli()
以使用其他时间分隔符(例如-
),:
)替换获取的时间字符串中的所有.replace()
。答案 1 :(得分:0)
您可能会在userPath中获取未转义的\。尝试将所有\更改为/.
答案 2 :(得分:-1)
def createNewFiles(self):
# Nons allons vérifier l'existance du dossier Sniffer_Serie_Result et le créer si besoin
# De même pour le fichier csv
if (os.name == "nt"): # pour windows
self.userPath = os.getenv('HOME') or os.getenv('USERPROFILE')
self.folderPath= self.userPath + "/Sniffer_Serie_Result"
#exist_ok=True ==> cree le dossier si il n'existe pas
os.makedirs(self.folderPath,exist_ok=True)
self.timestampWithSec= self.timestampWithoutMilli() # utilisé dans les noms de fichier
self.filePathRequest= self.folderPath + "/Request_at_" + self.timestampWithSec + ".csv"
self.filePathResponse= self.folderPath + "/Response_at_" + self.timestampWithSec + ".csv"
self.filePathOverall = self.folderPath + "/Overall_result_at_" + self.timestampWithSec + ".csv"
with open(self.filePathRequest, 'w') as f:
writer = csv.writer(f)
writer.writerow(["Kind of message","Timestamp","Message Hexa","Message ASCII"])
with open(self.filePathResponse, 'w') as f:
writer = csv.writer(f)
writer.writerow(["Kind of message","Timestamp","Message Hexa","Message ASCII"])
使用此代码问题完全相同,创建文件夹但不创建文件。有同样的错误。