我的脚本打开一个文件(a.txt)并将其复制到一个新文件(b.txt)。如果新文件存在,它会索引名称(b1.txt),所以我不会覆盖现有的文件。现在我想在函数(method)之外为复制的文件(b#.txt)使用最新的名称?-抱歉,我是新来的)。你知道吗
这是我剧本的一部分。在复制原始文件后调用replaceAll方法替换某些文本时,我希望使用newFile的当前值。你知道吗
class classMain:
def copyFile(self,origFile,newFile):
fIn = open(origFile,'r')
i = 0
while os.path.exists(newFile):
i += 1
newFile = 'b'+str(i)+'.txt'
fOut = open(newFile,'w')
for line in fIn:
fOut.writelines(line)
fIn.close()
fOut.close()
def replaceAll(self,file,searchExp,replaceExp):
for line in self.fIn(file, inplace=1):
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)
谢谢!你知道吗
由于您不知道函数将要创建哪个文件,请通过返回一个值来告诉您:
return
将立即结束它所在的函数的执行,因此相应地放置它。在您的例子中,它应该是copyFile()
的最后一行。使用copyFile()
时,通过将其赋给变量来捕获它返回的值:如果您不想保存返回值,只需像以前一样调用
copyFile
,返回值将被讨论。你知道吗其他一些答案建议设置一个全局变量。这在某些方面可能是正确的,但这是一个“副作用”,因为它在调用函数的代码中不可见。保持它的简单性并返回值,直到出现无法用这种方法解决的问题为止。你知道吗
您可以:1)使用全局变量存储newFile变量的最终值。 2) 返回newFile变量的值,然后将其作为参数传递给replaceAll函数
你提到这是在
class classMain
。虽然这不是解决问题的最佳encapsulation,但您可以通过将变量newFile
写回成员变量来共享它,如下所示:然后可以通过在类方法中将成员变量作为
self.newFile
写入并从中读取来引用它。但是,作为Kaustubh mentioned,还有其他方法可以解决这个问题。This documentation也可以帮助你。你知道吗欢迎来到StackOverflow!祝你好运。你知道吗
相关问题 更多 >
编程相关推荐