मैं एक अजगर नौसिखिया हूं और मैं एक स्क्रिप्ट बनाने की कोशिश करता हूं जो सभी मौजूदा एक्सेल कार्यपुस्तिकाओं को एक ही फ़ोल्डर में एक नए में समेकित करता है ... हालांकि मुझे यह बताते हुए एक त्रुटि है कि एक्सेल फाइलें नहीं मिल सका .... मैं फंस गया हूँ . कोडिंग के नीचे देखें:

import win32com.client as win32
import os

excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Add()
path = r"/Users/lb/Desktop/consolidation"
suffix = "xlsx"
dirs = os.listdir(path)

for file in dirs:
    if file.endswith(suffix):
    w = excel.Workbooks.Open(file)
    w.Sheets(1).Copy(wb.Sheets(1))

wb.SaveAs(os.path.join(path, "result.xlsx"))
excel.Application.Quit()

जब मैं स्क्रिप्ट चलाता हूं तो यह त्रुटि होती है:

फ़ाइल "C:/Users/lb/PycharmProjects/New Project/fusion2.py", लाइन 12, w = excel.Workbooks.Open(file) File "C:\Users\lb\AppData\Local\Temp\gen_py\ 3.7\00020813-0000-0000-C000-000000000046x0x1x7\Workbooks.py", लाइन 78, ओपन , कन्वर्टर, AddToMru, लोकल, करप्टलोड में) pywintypes.com_error: (-2147352567, 'अपवाद हुआ।', (0, 'माइक्रोसॉफ्ट') Excel', "'business_Descriptor.xlsx' नहीं मिला। फ़ाइल नाम की वर्तनी जाँचें, और सत्यापित करें कि फ़ाइल स्थान सही है।

यदि आप अपनी हाल ही में उपयोग की गई फ़ाइलों की सूची से फ़ाइल खोलने का प्रयास कर रहे हैं, तो सुनिश्चित करें कि फ़ाइल का नाम बदला, स्थानांतरित या हटाया नहीं गया है।", 'xlmain11.chm', 0, -2146827284), कोई नहीं)

1
lb2019 15 सितंबर 2019, 17:14

1 उत्तर

सबसे बढ़िया उत्तर

मुझे विश्वास है कि आपका रास्ता गलत हो सकता है। आम तौर पर बोलते हुए, विंडोज़ में उपयोगकर्ता निर्देशिका इस तरह कुछ होनी चाहिए:

C:\\Users\\lb\\Desktop\\consolidation

यदि आप अपने पथ के बारे में अनिश्चित हैं, तो आप अपने पथ को अपनी पायथन लिपि में नेविगेट करके तब तक डिबग कर सकते हैं जब तक कि आप os.chdir() कमांड और os.listdir() कमांड के साथ अपना फ़ोल्डर नहीं ढूंढ लेते। जब आप अपने इच्छित फ़ोल्डर में हों, तब आप os.getcwd() कमांड का उपयोग कर सकते हैं।

enter image description here

यदि आप प्राप्त करना चाहते हैं तो मैं इसे पढ़ने का सुझाव देता हूं पायथन में फाइल सिस्टम से परिचित।

पिछले भाग से आगे बढ़ते हुए, ऐसा लगता है कि आपके कोड में,

for file in dirs:
    if file.endswith(suffix):
        w = excel.Workbooks.Open(file)
        w.Sheets(1).Copy(wb.Sheets(1))

आप फ़ाइल को फ़ाइल के स्ट्रिंग नाम से खोलने का प्रयास कर रहे हैं, पथ नहीं। यदि आप इस लिंक आप देखेंगे कि वे पथ निर्देशिका के साथ नाम जोड़ते हैं। यह आपकी समस्या को ठीक करना चाहिए: पी

import os

for filename in os.listdir('path/to/dir'):
    if filename.endswith('.log'):
        with open(os.path.join('path/to/dir', filename)) as f:
            content = f.read()

अनिवार्य रूप से आपको जो करने की आवश्यकता है वह है अपना बदलना

w = excel.Workbooks.Open(file)-> w = excel.Workbooks.Open(os.path.join(path,file))

तो आपके कोड के उस हिस्से का अंतिम परिणाम इस तरह दिखना चाहिए (अगर पर इंडेंटेशन नोट करें! उनके बिना if स्टेटमेंट कुछ नहीं करता है):

for file in dirs:
    if file.endswith(suffix):
        w = excel.Workbooks.Open(os.path.join(path,file))
        w.Sheets(1).Copy(wb.Sheets(1))
0
Enthus3d 15 सितंबर 2019, 18:40